ResultMap的使用

本文深入探讨MyBatis框架中的核心元素ResultMap,解析其如何解决POJO属性与表结构字段不一致的问题,以及如何实现一对一、一对多、多对多等高级查询。通过示例说明ResultMap的配置与使用,包括autoMapping属性的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ResultMap是Mybatis中最重要最强大的元素,使用ResultMap可以解决两大问题:

  1. POJO属性名和表结构字段名不一致的问题
  2. 完成高级查询,比如说,一对一、一对多、多对多。

解决表字段名和属性名不-致的问题有两种方法:

  1. 如果是驼峰似的命名规则可以在Mybatis配置文件中设置解决
  2. 使用ResultMap解决。
  3. 使用别名

示例:

<!--
	id:唯一标识
	type:结果集对应的java类型!这里如果没有起别名的话,需要填写的是这个实体类的具体路径
	autoMapping :完成数据库字段名到属性名自动映射,并且支持驼峰规则
-- >
<resultMap type= "User" id= “userResultMap” autoMapping= "true ">
	<!-- 完成数据的字段名到j ava对象中属性的映射-- >
	<!-- id标签指定主键的 ,建议大家不要省略
	column :数据库的字段的名字
	property :jav a中属性的名字
	-->
	<id column= "id" property= "id"/>
	<!-- result完成不是 主键的字段的映射-->
	<result column= "user_ name”property= "UserName "/>
/resultMap>


<!-- resultType :结果集映射的java对象-->
<select id="queryAllUser" resultMap="userResultMap">
	select * from tb_ user
</select>

这里 resultMap要和上面的resultMap标签中的id一样!!

resultMap的自动映射:

在上面讲到的ResultMap中有这样的一个疑问,如果表字段名和属性名-致的情况下是否也需要定义出来?

这个决定于resultMap的autoMapping属性,默认为true。

为true:
Resultmap中定义不全的属性会自动映射到user实体中。
为false:
只是针对定义的ResultMap定义的属性做映射。

<resultMap type= "User" id= "userResul tMap" autoMapping= "true">
<id column="id" property= "id"/>
<result column="user_ name"" property= "userName "/>
</resultMap>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值