前言
在客觀世界中,對像很少是孤獨存在的,如班級與學生之間的關係,學生與課程之間的關係,它們的實例之間可以互相訪問,這就是關聯關係。 MyBatis 的關聯映射可以大大簡化持久層數據的訪問,關聯關係的分類如下:
我們首先繪製一個簡化的ER 圖來表示三種關聯關係。
上圖表示的三種關係:
引言
而在實際項目開發中,經常存在一對一的關係,如一個人對應一張身份證信息,這就是一對一的關係。下面是一個簡單的
實例:
1、建表過程我就省略了,主要是一張Person表,一張IDCard表,其相關屬性見步驟2Pojo類屬性所示;
2、建立一個Person對象和一個IDCard對象:
mybatis/pri/xiaoyang/otot/pojo/IDCard.java
public class IDCard implements Serializable { private int id; // 主鍵private String cardCode; // 身份證編號private String carAddress; // 身份證地址//構造函數及Getter/Setter/toString...}mybatis/pri/xiaoyang/otot/pojo/Person.java
public class Person implements Serializable { private int id; // 主鍵private String name; // 姓名private String sex; // 性別private IDCard iDCard; //身份證對象,人和身份證一對一關係//構造函數及Getter/Setter/toString...}3、接下來是XML映射文件:
mybatis/pri/xiaoyang/otot/mapper/IDCardMapper.xml
<mapper namespace="pri.xiaoyang.otot.mapper.IDCardMapper"> <!-- 根據主鍵查詢IDCard信息,封裝為IDCard對象並返回--> <select id="selectIDCardById" pamaeterType="int" resultType="pri.xiaoyang.otot.pojo.IDCard"> select * from idcard where id = #{id} </select></mapper>mybatis/pri/xiaoyang/otot/mapper/PersonMapper.xml
<mapper namespace="pri.xiaoyang.otot.mapper.PersonMapper"> <!-- 根據person主鍵查詢Person信息,封裝為Person對象並返回--> <select id="selectPersonById" pamaeterType="int" resultMap="PersonMapper"> select * from person where id = #{id} </select> <!-- 映射Person對象的resultMap --> <resultMap type="pri.xiaoyang.otot.pojo.Person" id="PersonMapper"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="sex" column="sex" /> <!-- 一對一關聯映射:association --> <association property="iDCard" column="card_id" select="pri.xiaoyang.otot.mapper.IDCardMapper.selectIDCardById" javaType="pri.xiaoyang.otot.pojo.IDCard"/> </resultMap ></mapper>注:在PersonMapper.xml中定義了一個<select/>標籤,該標籤的sql語句是根據Person表的主鍵字段來查詢出唯一的Person信息,由於該Person表和IDCard表關聯,因此返回一個resultMap值為personMap的映射對象。 personMap使用了<association/>標籤映射了一對一的關聯關係,其標籤內的屬性select表示會以column的屬性值"card_id"來作為參數執行IDCardMapper中定義的selectIDCardById查詢對應的IDCard數據,查詢出的數據會被封裝到property屬性值的“card”對像中。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。