理解mybaitis中的association和collection的區別


最近一直把collection和association弄混,所以為了增強自己的記憶,就擼一個關系出來算是總結罷了


1. 關聯-association
2. 集合-collection

比如同時有User.java和Card.java兩個類

User.java如下:

public class User{

private Card card_one;

private List<Card> card_many;

}

 

在映射card_one屬性時用association標簽, 映射card_many時用collection標簽.

所以association是用於一對一和多對一,而collection是用於一對多的關系

下面就用一些例子解釋下吧

association-一對一

人和身份證的關系

下面是pojo

下面是mapper和實現的接口

PersonMapper.xml 還使用association的分步查詢。

同理多對一,也是一樣

只要那個pojo出現private Card card_one;

即使用association


collection 一對多和association的多對一關系

學生和班級的一對多的例子

pojo類

ClazzMapper使用到了集合-collection 即為一對多,一個班級面對多個學生

 

<?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.StudentMapper">
<select id="selectStudentById" parameterType="int" resultMap="studentResultMap">
select * from tb_clazz c,tb_student s where c.id = s.id and s.id = #{id}
</select>
<select id="selectStudentByClazzId" parameterType="int" resultMap="studentResultMap">
select * from tb_student where clazz_id = #{id}
</select>
<resultMap type="com.glj.pojo.Student" id="studentResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
<result property="age" column="age"/>
<association property="clazz" javaType="com.glj.pojo.Clazz">
<id property="id" column="id"/>
<result property="code" column="code"/>
<result property="name" column="name"/>
</association>
</resultMap>
</mapper>

StudentMapper則是與班級為多對一關系,所以使用了關聯-association


嗯,希望我以后又不記得二者的關系時,能感謝現在總結的自己


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM