mybatis association , collection 标签使用

本文详细介绍了MyBatis框架中如何通过resultMap进行一对一和一对多的关联映射,包括使用select属性动态加载关联对象和直接在内部定义关联对象的方式。通过对User和Record两个类的实例讲解,展示了如何在XML配置文件中实现复杂的数据映射。

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

##自己记录一下
#####定义User ,Record

public class User {
	private String user_id;
	private String user_name;
	private List<Record> recordList;
	private Record record;
}
public class Record {
	private String record_id;
	private String record_name;
}
<resultMap id="userMap" type="com.air.manager.pojo.agent.User">
		<id column="USER_ID" property="user_id" jdbcType="VARCHAR" />
		<result column="USER_NAME" property="user_name" jdbcType="VARCHAR" />

	    // 一、关联单个对象 association ,如果关联对象超过一个会报错	
        //方法1 使用select属性查找selectRecordByUserId去加载
		<association property="record" column="USER_ID" select="selectRecordByUserId"/>

        //方法2 直接在内部定义record属性
        <association property="record" javaType="com.air.manager.pojo.agent.Record" >
            <id column="RECORD_ID" property="record_id" jdbcType="VARCHAR" />
		    <result column="RECORD_NAME" property="record_name" jdbcType="VARCHAR" />
        </association >

        // 二、关联对象集合 collection
        //方法1 使用select属性查找selectRecordByUserId去加载
		<collection property="recordList" column="USER_ID" select="selectRecordByUserId"/>

        //方法2 直接在内部定义recordList集合 ,javaType="java.util.ArrayList"可以不添加
        <collection property="recordList" ofType="com.air.manager.pojo.agent.Record"  javaType="java.util.ArrayList" >
            <id column="RECORD_ID" property="record_id" jdbcType="VARCHAR" />
		    <result column="RECORD_NAME" property="record_name" jdbcType="VARCHAR" />
        </collection>
</resultMap>
<select id="queryList" resultMap="userMap">
		 SELECT 
			 T.USER_ID ,
			 T.USER_NAME
		 FROM KING_USER T 
</select>

<resultMap id="recordMap" type="com.air.manager.pojo.agent.Record">
		<id column="RECORD_ID" property="record_id" jdbcType="VARCHAR" />
		<result column="RECORD_NAME" property="record_name" jdbcType="VARCHAR" />
</resultMap>
	
<select id="selectRecordByUserId" resultMap="recordMap">
		SELECT  
         R.RECORD_ID,
         R.RECORD_NAME
    	FROM KING_RECORD R WHERE R.USER_ID=#{userId} //这里的userId名称可以随意,一样可以取到值
</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值