MyBatis 中一對一和一對多的對映關係

2022-08-19 23:30:11 字數 1571 閱讀 4900

1 一對一對映

比如每位學生有乙個位址。

public class address

public class student

我們根據學生 id 選擇學生資訊

方法一:使用句點符號表示巢狀物件的引用,

student 的 address 屬性使用了圓點記法被賦上了 address 對應列的值。

view code

方法二:使用mybatis提供的一對一對映,關鍵字:association

1)

select stud_id, name, email, a.addr_id, street, city, state,

zip, country

from students s left outer join addresses a on

s.addr_id=a.addr_id

where stud_id=#

元素被用來匯入「有乙個」(has-one)型別的關聯。

如果內嵌的物件有對應的 resultmap 那麼使用 比較方便。如果內嵌物件需要其它的查詢來生成物件,使用方法 3)比較好。

2)也可以使用

3)通過使用巢狀 select 查詢來獲取 student 及其 address 資訊,**如下:

select * from addresses where addr_id=#

select * from students where stud_id=#

在此方式中,元素的 select 屬性被設定成了 id 為 findaddressbyid 的語句。這裡,兩個分開的sql 語句將會在資料庫中執行,第乙個呼叫 findstudentwithaddress 載入 student 資訊,而第二個呼叫 findaddressbyid 來載入 address 資訊。

addr_id 列的值將會被作為輸入引數傳遞給 selectaddressbyid 語句;如果有多個引數可以通過逗號分隔。

比如老師和課程的關係,老師可以講多門課程,每門課程有乙個老師

public class course

public class tutor

1)使用內嵌結果 resultmap 實現一對多對映。下面是配置檔案

select t.tutor_id, t.name as tutor_name, email, c.course_id,

c.name, description, start_date, end_date

from tutors t left outer join addresses a on t.addr_id=a.addr_id

left outer join courses c on t.tutor_id=c.tutor_id

where t.tutor_id=#

元素的 resultmap 屬性設定成了 courseresult,courseresult 包含了 course 物件屬性與表列名之間的對映。

2)使用巢狀 select 語句實現一對多對映,配置檔案如下

mybatis之一對一,一對多

resulttype 直接表示返回型別 基本資料型別 引用資料型別 resultmap 對外部resultmap 資料庫字段資訊和物件屬性不一樣 複雜的聯合查詢,自由控制對映結果 注 它們兩個不能同時存在 association select from class c,teacher t where...

Mybatis註解實現 一對一對映 一對多對映

results id usermap value one 相當於 xml 檔案中的 association 標籤 column 代表資料庫中的字段 property 代表 pojo 類中的屬性 和上面的column 形成一一對應的關係 results 註解對應的 id值 可以使用 resultmap...

JavaWeb mybatis一對一 一對多查詢

mybatis查詢基本返回資料基本用到的都是resulttype與resultmap,resulttype必須po類與sql欄位一致,而resultmap可以不一致通過配置對映。本篇文章一是要講解resulttype與resultmap如何使用 二是重點講解一對一與一對多查詢resultmap的使用...