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标签用来实现一对多的关系
救救就学到这里,博主的文章为什么没人看,虽然是抄作业吧,但我也是仔仔细细过了一遍的提示:对于这篇学习笔记就暂时到这了,兄弟们加油
对于这篇学习笔记就暂时到这了,兄弟们加油