mybatis實現一對一關聯(lián)映射實例代碼
前言
在客觀世界中,對象很少是孤獨存在的,如班級與學生之間的關系,學生與課程之間的關系,它們的實例之間可以互相訪問,這就是關聯(lián)關系。MyBatis 的關聯(lián)映射可以大大簡化持久層數據的訪問,關聯(lián)關系的分類如下:
- 一對一
- 一對多
- 多對多
我們首先繪制一個簡化的 E-R 圖來表示三種關聯(lián)關系。

上圖表示的三種關系:
- 一對一:一個班主任只屬于一個班級,一個班級也只能有一個班主任
- 一對多:一個班級有多個學生,一個學生只屬于一個班級
- 多對多:一個學生可以選多門課,一門課可以有多個學生選
引言
而在實際項目開發(fā)中,經常存在一對一的關系,如一個人對應一張身份證信息,這就是一對一的關系。下面是一個簡單的
實例:
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" />
<!-- 一對一關聯(lián)映射: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表關聯(lián),因此返回一個resultMap值為personMap的映射對象。personMap使用了<association/>標簽映射了一對一的關聯(lián)關系,其標簽內的屬性select表示會以column的屬性值"card_id"來作為參數執(zhí)行IDCardMapper中定義的selectIDCardById查詢對應的IDCard數據,查詢出的數據會被封裝到property屬性值的“card”對象中。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
springmvc九大組件之HandlerAdapter詳解
這篇文章主要介紹了springmvc九大組件之HandlerAdapter詳解,RequestMappingHandlerAdapter支持的handler的類型是HandlerMethod,而HandlerMethod是通過解析@RequestMapping注解獲得的,需要的朋友可以參考下2023-11-11
MybatisPlus自帶的queryWrapper實現時間倒序方式
這篇文章主要介紹了MybatisPlus自帶的queryWrapper實現時間倒序方式,具有很好的參考價值,希望對的有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Spring中的@Value和@PropertySource注解詳解
這篇文章主要介紹了Spring中的@Value和@PropertySource注解詳解,@PropertySource:讀取外部配置文件中的key-value保存到運行的環(huán)境變量中,本文提供了部分實現代碼,需要的朋友可以參考下2023-11-11

