?根據(jù)實際業(yè)務(wù)場景需求壹甥,對待辦任務(wù)和已辦任務(wù)需要進行分頁查詢
?先查詢出所有的待辦任務(wù)闷祥,然后根據(jù)任務(wù)id查詢出所有的變量
?查詢一對多問題:分頁插件不支持嵌套結(jié)果映射,由于嵌套結(jié)果方式會導(dǎo)致結(jié)果集被折疊,因此分頁查詢的結(jié)果在折疊后總數(shù)會減少熊杨,所以無法保證分頁結(jié)果數(shù)量正確
解決辦法
1:拆分sql查詢語句沐兵,拿到任務(wù)id后通過程序遍歷任務(wù)變量
1)在查詢所有的基礎(chǔ)上去除左連接查詢?nèi)蝿?wù)變量sql語句
2)編寫service層的實現(xiàn)時通過查詢的代辦任務(wù)遍歷任務(wù)變量
缺點: 消耗的資源多别垮,性能低,每一次查詢都需要循環(huán)遍歷一次任務(wù)id
優(yōu)化: 在service層做判斷扎谎,如果傳入的page對象為空碳想,我們就默認查詢?nèi)可斩瑐魅雙age對象,我們就做分頁查詢,在service實現(xiàn)層和dao層有不同的方法對應(yīng)
1)在mapper.xml中胧奔,增加實體bean的映射SubResultMap逊移,在該映射中嵌套一個子查詢selectRunProcVariable,主查詢查詢待辦任務(wù)id,主查詢得到的每一條記錄龙填,會去子查詢查詢一次
2)子查詢selectRunProcVariable查運行時流程變量
mybatis一對多關(guān)聯(lián)查詢+pagehelper->分頁錯誤螟左。
現(xiàn)象:
網(wǎng)上其他人遇到的類似問題:https://segmentfault.com/q/1010000009692585
解決:
pagehelper不支持這種查詢:
https://github.com/pagehelper/Mybatis-PageHelper/issues/186
暫時解決方案:
collection標簽里使用select屬性指定子查詢(缺點:查詢次數(shù)增多)
todo:
實現(xiàn)自己的分頁插件
實際解決
使用collection子查詢