站在巨人的肩膀上
mybatis一對多巢狀查詢和分頁
類似的需求有很多,比如經典的乙個使用者有n個角色,乙個角色有n個許可權,那麼通過使用者的id來查詢角色和許可權資料等等。
至於分頁外掛程式,無論是mybatis-pagehelper還是mybatis-plus都可以輔助,這裡主要記錄不同查詢方式對分頁的影響。
先展示結果:
copy,,]
},,,]
}]
}}
product用於資料庫對映,為了保持其簡潔,其他的二次封裝不在product裡進行,而用繼承的方式。
定義模型productvo
,
copy@data
public class productvo extends product
copy
select
p.id,
p.name,
p.code,
...i.id images_id,
i.product_id images_product_id,
...from products p
inner join product_images i on p.id = i.product_id
where p.category_id = #
select>
定義productslistmap
結果對映
copy-->
resultmap>
注意:
總結
優點
缺點比如想查
page=1,limit=10
的資料,本來期望的是查詢出10個商品,然後這10個商品分別再巢狀查詢出自己的商品集合。但是會發現,可能商品只有兩三個,每個下面都帶了自己的商品集合。
原因:先通過表連線把錶記錄關聯進來了,如果有3個商品,關聯表之後每個商品有4條記錄,那麼其實這時候雖然只有三個商品,但是這個記憶體中的臨時表已經有12條記錄了,在語句的最後加上 limit 0,10,其實分頁的時候分的是這12條記錄。最終就會導致最終的對映結果只出現了3個商品,而非我們期望的10個商品。
copy
select
from products
where category_id = #
select>
定義productslistmap
結果對映
copy
collection>
resultmap>
注意:
copy
select
from product_images
where product_id = #
select>
總結
優點
缺點
mybatis中變數遇到的變數對應的坑
將integer型別的變數存入mysql資料庫中 例如mybatis中有如下的條件修改,number為interger型別的變數 number 你會發現,唯獨number 0時,資料庫不會做相應的更新動作,其他任何number都沒有問題,對應的應該修改如下 去掉number 這個條件 number ...
pageHeler遇到的坑分頁問題
1 在微服務裡面做查詢介面,用到pagehelper,資料庫只有8行資料,pagenum 1 pagesize 10,pagenum 2 pagesize 10,pagenum 3 pagesize 10。返回的資料都是那8條。原因 這是pagehelper裡面自帶的乙個功能,叫做reasonabl...
使用mybatis過程中遇到的坑以及外掛程式
string型別的資料比較 陣列 時間格式比較 注意傳值不同時的不同判斷為空方式 etc 我曾七次鄙視自己的靈魂 第一次,當它本可進取時,卻故作謙卑 第二次,當它空虛時,用愛慾來填充 第三次,在困難和容易之間,它選擇了容易 第四次,它犯了錯,卻借由別人也會犯錯來寬慰自己 第五次,它自由軟弱,卻把它認...