mybatis關聯查詢有兩種

2021-09-02 15:58:04 字數 1209 閱讀 6666

關聯查詢有兩種

1,元素標籤中傳入關聯條件值,此種方法一般和sql語句的子查詢配套(即關聯實體的列是用sql結果集表示)

一對一,多對一都是如此用

warning - @mbggenerated

select kf.*  from tb_cus_firm_chg  kf where  kf.customer_key=#

//子查詢的引數不要指定,直接通過關聯壓入

select c.* from tb_cus_firm_chg c 

where 1=1

<

collection

property

="htauthoritydto"

oftype

="com.sailod.shiro.dto.htauthoritydto"

select

="selectauthority"

column=""

>

collection

>

這部分就相當於用乙個大sql寫的關聯

2,直接在大的sql中就把關聯體現出來(例如where o.pid=p.p_id)(不用子查詢)這種往往和用標籤直接寫出結果(也可用不帶條件的子查詢表示結果集(便於懶載入))

注意用這種方式的時候要把主實體和關聯的實體一起查出 select p.*,o.*

一對多,多對多都如此

<?xml version="1.0" encoding="utf-8"?>  

select p.*,o.* from person p,orders o where o.pid=p.p_id and p.p_id=#  

注意:兩張表中的主鍵id欄位名要唯一,例如不能都寫id,不然的話,在一對多查詢的時候就會出現:級聯出來的訂單項只有一條記錄。我之前就是將兩張表的主鍵id欄位名都寫為id,

導致測試結果級聯出來的多一直只有一條資料,具體如下:

id和result的唯一不同是id表示的結果將是當比較物件例項時用到的標識屬性。

這幫助來改進整體表現,特別是快取和嵌入結果對映。所以不同資料的id應該唯一區別,不然導致資料結果集只有一條資料。

mybatis關聯查詢有兩種

關聯查詢有兩種 1,元素標籤中傳入關聯條件值,此種方法一般和sql語句的子查詢配套 即關聯實體的列是用sql結果集表示 一對一,多對一都是如此用 warning mbggenerated select kf.from tb cus firm chg kf where kf.customer key ...

mybaits兩種關聯查詢

關聯查詢分兩種 1,用乙個總的sql搞定 這種關聯體現在collect用的是標籤,sql中查詢主實體,被關聯實體 由於在乙個sql中,注意兩個實體 查詢結果集 中欄位名不能一樣 一樣的化會在用pagehelper等自動裝配的語句出問題 未明確定義列 還有就是如果id一樣會導致多方只查到乙個 此方法看...

mybaits兩種關聯查詢

關聯查詢分兩種 1,用乙個總的sql搞定 這種關聯體現在collect用的是標籤,sql中查詢主實體,被關聯實體 由於在乙個sql中,注意兩個實體 查詢結果集 中欄位名不能一樣 一樣的化會在用pagehelper等自動裝配的語句出問題 未明確定義列 還有就是如果id一樣會導致多方只查到乙個 此方法看...