当前位置: 首页 > news >正文

Mybatis中ResultType和ResultMap的区别

每篇博文的浪漫主义

【26岁,一无所有,我划着轮椅奔山赴海】 https://www.bilibili.com/video/BV1Te4y1S79M?share_source=copy_web&vd_source=385ba0043075be7c24c4aeb4aaa73352

26岁,一无所有,我划着轮椅奔山赴海

在这里插入图片描述

本博文的学习笔记来自这篇文章

ResultType和ResultMap的区别

对于ResultType和ResultMap都是执行查询语句时返回的结果集。
而且要注意:resultType 和 resultMap 之间只能同时使用一个。

ResultType

ResultType相对与ResultMap而言更简单一点。只有满足ORM(Object Relational Mapping,对象关系映射)时,
即数据库表中的字段名和实体类中的属性完全一致时,才能使用,否则会出现数据不显示的情况。

创建User 对象, 拥有两个字段id,userName。

User queryUser(String id);
<resultMap id="User" type="com.mu.User">
    <result column="user_name" jdbcType="VARCHAR" property="userName" />
  </resultMap>
  
 <select id="queryUser" resultMap="User">
     select * from user where id = #{id}
 </select>

从代码中可以清晰的看出,resultMap可以对返回的参数进行配置,mybatis可以进行驼峰自动转换(默认是关闭的,开启该配置的操作看mybatis操作手册–mybatis - MyBatis 3)
当数据库字段和Java对象字段不满足驼峰(列名不匹配),可以通过resultMap这里来配置,进行字段匹配。

我们再来看看这位博主的代码:

如图所示,由于实体类Order的属性和表tb_order的字段不一致,导致页面数据不显示。

在这里插入图片描述
在这里插入图片描述

ResultMap

ResultMap和ResultType的功能类似,但是ResultMap更强大一点,ResultMap可以实现将查询结果映射为复杂类型的pojo。

如上图的ResultType显示的结果,用ResultMap就可以解决。

在这里插入图片描述

在这里插入图片描述
说明:

ResultMap标签的id属性是唯一的,和select标签的resultMap一致。
type属性是pojo(普通的JavaBean对象)的包名加类名,用来封装信息。如果mybatis里面配置了别名包,也就是给包起别名,那么type里面直接写类名就可以了。

在这里插入图片描述
ResultMap中的

  • id标签是用来描述表中的主键的对应关系
  • column用来描述数据库表中的主键字段名
  • property用来描述pojo中的属性名。

result标签是用来描述表中的普通字段的对应关系,

  • column用来描述数据库表中的普通字段名

  • property用来描述pojo中的属性名。

association标签用来实现一对一的关系
collection标签用来实现一对多的关系

在这里插入图片描述

这里有篇博文也不错,可以来看看

救救就学到这里,博主的文章为什么没人看,虽然是抄作业吧,但我也是仔仔细细过了一遍的
提示:对于这篇学习笔记就暂时到这了,兄弟们加油
对于这篇学习笔记就暂时到这了,兄弟们加油

从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你!

如果又出错的,请各位友友指正。

请添加图片描述

新人报到,各位友友们,给我个三联(点赞,关注,收藏)

相关文章:

  • 标准化,归一化,二值化,One-Hot,卡方检验选取重要特征,主成分分析,缺失值和异常值处理
  • Spring Boot + vue-element 开发个人博客项目实战教程(二十二、文章管理页面开发(1))
  • python地图库(一)—folium
  • cesium拾取pick系列(拾取坐标和对象)
  • 说一说js继承的方法和优缺点?
  • ARMv8/ARMv9的Exclusive机制深度解读
  • 机器学习——梯度下降算法
  • 64.【网络编程】
  • Python爬虫-网页认识
  • 面试官:深度不够,建议回去深挖
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • 接口测试用例生成工具介绍及应用
  • C#接入 NPOI
  • 面试百问:项目上线后才发现bug怎么办?
  • SpringBoot+Vue实现前后端分离网上药店平台
  • #Java异常处理
  • 【EOS】Cleos基础
  • js学习笔记
  • mysql innodb 索引使用指南
  • 构建二叉树进行数值数组的去重及优化
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 区块链分支循环
  • 小试R空间处理新库sf
  • 一些css基础学习笔记
  • 译米田引理
  • 用jQuery怎么做到前后端分离
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • ${factoryList }后面有空格不影响
  • $L^p$ 调和函数恒为零
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (轉貼) UML中文FAQ (OO) (UML)
  • .Net 4.0并行库实用性演练
  • .NET CF命令行调试器MDbg入门(一)
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET Reactor简单使用教程
  • .NET Remoting学习笔记(三)信道
  • .net 按比例显示图片的缩略图
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .Net语言中的StringBuilder:入门到精通
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @angular/cli项目构建--http(2)
  • @ComponentScan比较
  • @Transaction注解失效的几种场景(附有示例代码)
  • [Angular 基础] - 指令(directives)
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现