溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis如何實現一對一關聯映射

發布時間:2021-07-20 14:53:41 來源:億速云 閱讀:155 作者:小新 欄目:編程語言

小編給大家分享一下mybatis如何實現一對一關聯映射,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

前言

在客觀世界中,對象很少是孤獨存在的,如班級與學生之間的關系,學生與課程之間的關系,它們的實例之間可以互相訪問,這就是關聯關系。MyBatis 的關聯映射可以大大簡化持久層數據的訪問,關聯關系的分類如下:

  • 一對一

  • 一對多

  • 多對多

我們首先繪制一個簡化的 E-R 圖來表示三種關聯關系。

mybatis如何實現一對一關聯映射

上圖表示的三種關系:

  • 一對一:一個班主任只屬于一個班級,一個班級也只能有一個班主任

  • 一對多:一個班級有多個學生,一個學生只屬于一個班級

  • 多對多:一個學生可以選多門課,一門課可以有多個學生選

引言

而在實際項目開發中,經常存在一對一的關系,如一個人對應一張身份證信息,這就是一對一的關系。下面是一個簡單的

實例:

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”對象中。

以上是“mybatis如何實現一對一關聯映射”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女