MyBatis⼀对多关联查询+pagehelper分页错误
Ø根据实际业务场景需求,对待办任务和已办任务需要进⾏分页查询
Ø先查询出所有的待办任务,然后根据任务id查询出所有的变量
Ø查询⼀对多问题:分页插件不⽀持嵌套结果映射,由于嵌套结果⽅式会导致结果集被折叠,因此分页查询的结果在折叠后总数会减少,所以⽆法保证分页结果数量正确
解决办法
1:拆分sql查询语句,拿到任务id后通过程序遍历任务变量
1)在查询所有的基础上去除左连接查询任务变量sql语句
2)编写service层的实现时通过查询的代办任务遍历任务变量
缺点: 消耗的资源多,性能低,每⼀次查询都需要循环遍历⼀次任务id
优化: 在service层做判断,如果传⼊的page对象为空,我们就默认查询全部,传⼊page对象,我们就做分页查询,在service实现层和dao层有不同的⽅法对应
1)在l中,增加实体bean的映射SubResultMap,在该映射中嵌套⼀个⼦查询selectRunProcVariable,主查询查询待办任务id,主查询得到的每⼀条记录,会去⼦查询查询⼀次
2)⼦查询selectRunProcVariable查运⾏时流程变量
mybatis⼀对多关联查询+pagehelper->分页错误。
现象:
image
解决:
pagehelper不⽀持这种查询:
暂时解决⽅案:
collection标签⾥使⽤select属性指定⼦查询(缺点:查询次数增多)
todo:
实现⾃⼰的分页插件分页查询插件
实际解决
使⽤collection⼦查询
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论