日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

3.1 一對一查詢(多對一)

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

3.1.1 方式一

3.1.1.1 定義賬戶信息的實體類

public

3.1.1.2 編寫 Sql 語句

實現查詢賬戶信息時,也要查詢賬戶所對應的用戶信息。

<!

在 MySQL 中測試的查詢結果如下:

3.1.1.3 定義 AccountUser 類

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

public

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

public

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

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

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

3.1.1.6 創建 AccountTest 測試類

/**

3.1.1.7 小結

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

3.1.2 方式二

使用 resultMap,定義專門的 resultMap 用于映射一對一查詢結果。 通過面向對象的(has a)關系可以得知,我們可以在 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 一對多查詢

需求: 查詢所有用戶信息及用戶關聯的賬戶信息。

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

3.2.1 編寫 SQL 語句

3.2.2 User 類加入 List<Account

//一對多關系映射:主表實體應該包含從表實體的集合引用

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

/**

xml配置

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

collection 部分定義了用戶關聯的賬戶信息。表示關聯查詢結果集 property="accList" :

關聯查詢的結果集存儲在 User 對象的上哪個屬性。 ofType="account" :

指定關聯查詢的結果集中的對象類型即List中的對象類型。此處可以使用別名,也可以使用全限定名。

3.2.5 測試方法

/**

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。