Mybatis中resultMap标签实现多表查询(单个对象)

本文介绍了如何在Mybatis中利用resultMap标签进行多表查询,特别是处理单个对象的关联查询。通过示例展示了在mapper.xml中定义resultMap,实现N+1查询方式,即先获取主表信息,再根据主表信息查询关联表。这种方法与业务装配在service层完成有所不同。
摘要由CSDN通过智能技术生成
  1. resultMap标签写在mapper.xml中,由程序员控制SQL查询结果与实体类的映射关系(默认Mybatis使用的时auto mapping 即属性与列名一一对应)。
  2. 使用resultMap标签时,select标签不写resultType属性,而是使用resultMap属性引用resultMap标签。

单表自定义标签

mapper.xml

<resultMap type="Teacher" id="mymap">
<!-- 主键使用id配置映射关系 -->
	<id column="id" property="id1"/>			
	<!-- 其他列使用result配置映射关系 -->
	<result column="name" property="name1"/>
</resultMap>
<select id="selAll" resultMap="mymap">
	select * from teacher
</select>	

实体类

public class Teacher {
	private int id1;
	private String name1;

数据库
在这里插入图片描述
可以看到数据库的列名和实体类的属性名不同,我们可以在mapper中设置其映射关系

<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一种基于XML文件配置的持久化框架,其resultMap是其的一个非常重要的组件之一。简单来说,就是将查询结果映射成一个Java对象,以便于程序员的使用和维护。下面就来详细了解一下MyBatisresultMap。 1. resultMap的定义 在MyBatisMapper XML文件,可以通过定义resultMap来映射查询结果。具体的定义如下: ``` <resultMap id="resultMapName" type="resultType"> <!-- 这里定义映射关系 --> </resultMap> ``` 其,id为resultMap的名字,type为结果类型,也就是结果对象所在的类的全限定名。这里需要注意,resultType和type只能设置一个。 2. resultMap的映射关系 在resultMap,映射关系定义使用的是result标签,具体定义如下: ``` <result property="propertyName" column="columnName" javaType="javaType" jdbcType="jdbcType" typeHandler="typeHandler" /> ``` 其,property为结果对象的属性名,column为查询语句的列名,javaType为该属性的Java类型,jdbcType为该属性在数据库的类型,typeHandler为类型转换器。需要注意的是,column、javaType、jdbcType和typeHandler是可选的,如果没有指定,则MyBatis会自动根据属性名和列名进行简单的映射。 3. 关联关系映射 在实际开发,经常会涉及到多张之间的关联查询,此时需要用到MyBatis的关联映射。具体定义如下: ``` <association property="propertyName" resultMap="resultMapName" /> ``` 其,propertyName为当前结果对象用来保存关联对象的属性名,resultMapName为该关联对象所用的resultMap的名字。 4. 集合关联映射 除了单个对象之外,有时候还需要将查询结果映射成一个包含多个对象的集合。此时需要用到MyBatis的集合关联映射。具体定义如下: ``` <collection property="propertyName" resultMap="resultMapName" /> ``` 其,propertyName为当前结果对象用来保存集合的属性名,resultMapName为该集合元素所用的resultMap的名字。 5. resultMap的使用 在映射结果时,需要在查询语句使用resultMap,具体定义如下: ``` <select id="selectUser" parameterType="int" resultMap="resultMapName"> select id, username, password from user where id = #{id} </select> ``` 其resultMapName为映射结果所用的resultMap的名字。 综上所述,MyBatisresultMap是一个非常重要的组件,能够实现查询结果的映射和关联关系的处理,大大提高了程序员的开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值