MyBatis學習之一 多表查詢

2022-08-26 10:03:07 字數 1233 閱讀 5277

1、mybatis實際上並不是pojo和資料庫的字段的對應,而是pojo和sql語句的對應。

兩個表通過相同的主鍵來查詢

(1)內連線查詢

select * from tb_order o,tb_user u where o.user_id = u.id;

查詢tb_order和tb_user兩個表中id相等的資訊。

(2)外鏈結查詢

select * from tb_order o left join tb_user u on o.user_id = u.id      //on後面是關聯條件

與(1)結果相同。以外鏈結為主,以訂單為主不管是否對應客戶,都要把訂單查詢出來。

那麼如何將兩個表中查詢的結果封裝到乙個物件中呢?既包含訂單資訊也包含使用者資訊。

第一種解決方案:新建乙個類,包含訂單和使用者資訊。將查詢結果集和物件對應上。

擴充套件order物件,來對映結果集。

物件導向的思想解決方式:

在order物件中新增user物件

在order類中,新增private user user;並新增getter和setter方法。

使用resultmap

association完成物件中 的某個物件的對映

select

*,o.id as order_id,

u.id as user_id,

d.id as detail_id

from

tb_order o

left join tb_user u on o.user_id = u.id

left join tb_orderdetail d on d.order_id = o.id

where o.order_number = #

2、多對多查詢

需求:查詢訂單,查詢出下單人資訊並且查詢出訂單詳情中的商品資料。

3、resultmap的繼承

resultmap標籤內增加extends標籤,繼承其他resultmap,那麼該resultmap內就不用再寫重複的字段了。

4、延遲載入

需要的時候查,不需要的時候不查。

關聯查詢的時候才會有延遲載入

怎麼實現分布查詢,

學習筆記 Mybatis多表查詢

public class employee select 這種方法會導致最後查詢出來的dept id因用於第二個表的對映,而顯示為null值。只能通過dept.id來獲取部門id 將多表資料全部查出來,然後手動對映resultmap 相對安全,推薦使用,基於效能考慮,員工要多一些,順帶把部門資訊查出...

mybatis多表查詢

mybatis多表查詢 1 表之間的關係用幾種 1 一對一 2 一對多 3 多對一 4 多對多 舉例 使用者和訂單就是多對一 訂單和使用者就是多對一 乙個使用者可以有多個訂單 多個訂單屬於乙個使用者 老師和學生就是多對多 乙個老師可以教多個學生 乙個學生可以被多個老師交過。特例 如果咋天就乙個訂單。...

Mybatis多表查詢

首先。我們需要知道,表與表之間存在的幾種關係 一對一 一對多 多對一 多對多舉例 班級與學生 class表 students表 建立兩個實體類 classs表 public class classs public classs string classid public intgetid publi...