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<?xml version="1.0" encoding="UTF-8"