ResultMap中association和collection的区别

本文详细介绍了MyBatis中ResultMap的association和collection属性在一对多和多对一关系映射中的应用。association主要用于一对一和多对一关系,例如人与身份证的关系,而collection则用于一对多关系,如学生与班级。文中通过具体实例和POJO类展示了这两个属性的使用方法。

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

mybatis mapper配置文件结果集映射resultMap中collection属性(一对多关系结果集映射)和association属性(多对一关系结果集映射)理解:
collection的使用有两种resultMap和select,必须手动指定一种
association的使用和collection使用类似,只是right join需换成left join
rd_one属性时用association标签, 映射card_many时用collection标签.
所以association是用于一对一和多对一,而collection是用于一对多的关系
下面就用一些例子解释下吧
association-一对一
人和身份证的关系
下面是pojo

public class Card implements Serializable{
   
    private Integer id; private String code;//省略set和get方法.}public class Card implements Serializable{
   
   
 private Integer id;
 private String code;
//省略set和get方法.
}
public class Person implements Serializable{
   
    private Integer id; private String name; private String sex; private Integer age; //人和身份证是一对一的关系 private Card card;//省略set/get方法.}public class Person implements Serializable{
   
   
 private Integer id;
 private String name;
 private String sex;
 private Integer age;
 //人和身份证是一对一的关系
 private Card card;
//省略set/get方法.
}

下面是mapper和实现的接口

package com.glj.mapper; import com.glj.poji.Card; public interface CardMapper {
   
    Card selectCardById(Integer id);}package com.glj.mapper;

import com.glj.poji.Card;

public interface CardMapper {
   
   
 Card selectCardById(Integer id);
}

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.glj.mapper.CardMapper"> <select id="selectCardById" parameterType="int" resultType="com.glj.poji.Card"> select * from tb_card where id = #{
   
   id}  </select></mapper><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glj.mapper.CardMapper">
 <select id="selectCardById" parameterType="int" resultType="com.glj.poji.Card">
 select * from tb_card where id = #{
   
   id} 
 </select>
</mapper>?1234567package com.glj.mapper;  import com.glj.poji.Person;  public interface PersonMapper {
   
    Person selectPersonById(Integer id);}package com.glj.mapper;
 
import com.glj.poji.Person;
 
public interface PersonMapper {
   
   
 Person selectPersonById(Integer id);
}?12345678910111213141516171819<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值