Mybatis - 关联查询(06)

本文详细介绍了MyBatis中的一对一和一对多关联映射配置方法,包括具体的XML配置示例,并展示了如何通过association和collection标签来实现关联查询。

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

一对一关联

假如对于如下查询语句 select * from orders LEFT JOIN user on orders.user_id = user.user_idorders左连接user时,一个订单只可能连接一个user,简称一对一。用来接收返回值的pojo类有如下两种做法:

  • 再创建一个类,包含如下我们需要的信息。
  • orders中加入一个User属性。
    第一种需要新建一个类,不是很好的做法,所以下面讲解第二种如何实现。
	<resultMap type="Orders" id="oto">
		<id column="id" property="id"/>
		<result column="user_id" property="userId"/>
		<result column="number" property="number"/>
		<result column="createtime" property="createtime"/>
		<result column="note" property="note"/>
		<association property="user" javaType="User">
			<id column="user_id" property="id"/>
			<result column="username" property="username"/>
			<result column="sex" property="sex"/>
			<result column="birthday" property="birthday"/>
			<result column="address" property="address"/>
		</association>
	</resultMap>
	<select id="oneToOne" resultMap="oto">
		select * from orders LEFT JOIN `user` on orders.user_id = `user`.user_id
	</select>

一对多关联

sql语句:select * from user LEFT JOIN orders on orders.user_id = user.user_iduser左连接orders时,一个user可能存在多个orders。在User类里加上一个属性List<Orders>

	<resultMap type="User" id="otm">
		<id column="user_id" property="id"/>
		<result column="username" property="username"/>
		<result column="sex" property="sex"/>
		<result column="birthday" property="birthday"/>
		<result column="address" property="address"/>
		<collection property="list" ofType="Orders">
			<id column="id"	property="id"/>
			<result column="user_id" property="userId"/>
			<result column="number" property="number"/>
			<result column="createtime" property="createtime"/>
			<result column="note" property="note"/>
		</collection>
	</resultMap>
	
	<select id="oneToMore" resultMap="otm">
		select * from `user` LEFT JOIN orders on orders.user_id = `user`.user_id
	</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值