Mybatis的各种关联查询

  • 一对一关联

映射文件中的内容:

<mapper namespace="userMapper">
<!--type 别名的名称  -->
<resultMap type="_Classes" id="ClassResultMap">
<!--id 实体类中的id column 数据库表中的id  -->
	<id property="id" column="c_id"/>
	<result property="name" column="c_name"/>
<!--association 一对一中的关键字 property calss中的Teacher实体类 javaType property中对象的类型,也是别名的名称  -->
	<association property="teacher" javaType="_Teacher">
<!--teacher中的字段 id 实体类中的id column 数据库表中的id  -->
		<id property="id" column="t_id"/>
		<result property="name" column="t_name"/>
	</association>
</resultMap>
</mapper>
  • 一对多关联
映射文件中的内容:
<mapper namespace="userMapper">
<select id="getClass3" parameterType="int" resultMap="ClassResultMap3">
	select * from class c, teacher t,student s where c.teacher_id=t.t_id and c.C_id=s.class_id and  c.c_id=#{id}
</select>
<resultMap type="_Classes" id="ClassResultMap3">
	<id property="id" column="c_id"/>
	<result property="name" column="c_name"/>
	<association property="teacher" column="teacher_id" javaType="_Teacher">
		<id property="id" column="t_id"/>
		<result property="name" column="t_name"/>
	</association>
	<!--collection 一对多中的关键字 ofType指定students集合中的对象类型 -->
	<collection property="list" ofType="_Student">
		<id property="id" column="s_id"/>
		<result property="name" column="s_name"/>
	</collection>
</resultMap>

</mapper>





MyBatis中的ResultMap是一个非常强大的功能,它允许开发者自定义SQL查询结果映射到Java对象的过程。ResultMap可以指定如何映射结果集中的列到指定的Java对象的属性,这对于处理复杂的关系(如一对多、多对一等)尤其有用。关联查询通常用于查询结果集需要根据外键关联其他表的情况,MyBatis通过ResultMap提供了多种关联查询的方式,例如: 1. association:用于处理一对一关联关系,它可以将结果集的一个字段映射到另一个对象的实例。 2. collection:用于处理一对多关联关系,它可以将结果集的一个字段映射到对象的集合属性中。 使用ResultMap进行关联查询的基本步骤包括: - 在MyBatis的配置文件中定义ResultMap。 - 在resultMap中配置association或collection元素以表示关联关系。 - 在映射的SQL语句中指定使用ResultMap。 下面是一个简单的例子: ```xml <!-- 定义一个ResultMap --> <resultMap id="userOrderMap" type="User"> <id property="id" column="user_id" /> <result property="name" column="user_name" /> <!-- 一对一关联 --> <association property="order" javaType="Order"> <id property="id" column="order_id" /> <result property="orderDate" column="order_date" /> </association> </resultMap> <!-- 映射查询 --> <select id="findUserAndOrder" resultMap="userOrderMap"> SELECT u.*, o.* FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE u.id = #{userId} </select> ``` 在这个例子中,我们定义了一个名为`userOrderMap`的ResultMap,它映射了User对象和Order对象。`findUserAndOrder`查询返回的结果集会自动根据ResultMap映射到User对象中,其中User对象中包含了一个Order类型的属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值