日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

mybatis plus 多表查询_Mybatis 多表查询之一对多

發(fā)布時間:2025/4/16 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis plus 多表查询_Mybatis 多表查询之一对多 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本次案例主要以最為簡單的用戶和賬戶的模型來分析Mybatis多表關(guān)系。用戶為User 表,賬戶為Account 表。一個用戶(User)可以有多個賬戶(Account)。具體關(guān)系如下:

3.1 一對一查詢(多對一)

需求 查詢所有賬戶信息,關(guān)聯(lián)查詢下單用戶信息。 注意: 因為一個賬戶信息只能供某個用戶使用,所以從查詢賬戶信息出發(fā)關(guān)聯(lián)查詢用戶信息為一對一查詢。如 果從用戶信息出發(fā)查詢用戶下的賬戶信息則為一對多查詢,因為一個用戶可以有多個賬戶。

3.1.1 方式一

3.1.1.1 定義賬戶信息的實體類

public

3.1.1.2 編寫 Sql 語句

實現(xiàn)查詢賬戶信息時,也要查詢賬戶所對應(yīng)的用戶信息。

<!

在 MySQL 中測試的查詢結(jié)果如下:

3.1.1.3 定義 AccountUser 類

為了能夠封裝上面 SQL 語句的查詢結(jié)果,定義 AccountCustomer 類中要包含賬戶信息同時還要包含用戶信 息,所以我們要在定義 AccountUser 類時可以繼承 User 類。

public

3.1.1.4 定義賬戶的持久層 Dao 接口

public

3.1.1.5 定義 AccountDao.xml 文件中的查詢配置信息

<!--查詢所有賬戶同時包含用戶名和地址信息-->

注意:因為上面查詢的結(jié)果中包含了賬戶信息同時還包含了用戶信息,所以我們的返回值類型 returnType 的值設(shè)置為 AccountUser 類型,這樣就可以接收賬戶信息和用戶信息了。

3.1.1.6 創(chuàng)建 AccountTest 測試類

/**

3.1.1.7 小結(jié)

定義專門的 po 類作為輸出類型,其中定義了 sql 查詢結(jié)果集所有的字段。此方法較為簡單,企業(yè)中使用普 遍。

3.1.2 方式二

使用 resultMap,定義專門的 resultMap 用于映射一對一查詢結(jié)果。 通過面向?qū)ο蟮?has a)關(guān)系可以得知,我們可以在 Account 類中加入一個 User 類的對象來代表這個賬戶 是哪個用戶的。

3.1.2.1 修改 Account 類

public

3.1.2.2 修改 AccountDao 接口中的方法

/**

3.1.2.3 重新定義 AccountDao.xml 文件

<!-- 定義封裝account和user的resultMap -->

3.1.2.4 在 AccountTest 類中加入測試方法

/**

3.2 一對多查詢

需求: 查詢所有用戶信息及用戶關(guān)聯(lián)的賬戶信息。

分析: 用戶信息和他的賬戶信息為一對多關(guān)系,并且查詢過程中如果用戶沒有賬戶信息,此時也要將用戶信息 查詢出來,我們想到了左外連接查詢比較合適。

3.2.1 編寫 SQL 語句

3.2.2 User 類加入 List<Account

//一對多關(guān)系映射:主表實體應(yīng)該包含從表實體的集合引用

3.2.3 用戶持久層 Dao 接口中加入查詢方法

/**

xml配置

<!-- 定義User的resultMap-->

collection 部分定義了用戶關(guān)聯(lián)的賬戶信息。表示關(guān)聯(lián)查詢結(jié)果集 property="accList" :

關(guān)聯(lián)查詢的結(jié)果集存儲在 User 對象的上哪個屬性。 ofType="account" :

指定關(guān)聯(lián)查詢的結(jié)果集中的對象類型即List中的對象類型。此處可以使用別名,也可以使用全限定名。

3.2.5 測試方法

/**

總結(jié)

以上是生活随笔為你收集整理的mybatis plus 多表查询_Mybatis 多表查询之一对多的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。