MyBatis中使用collection一对多分页查询时记录数量不准确的问题

假设有如下实体表USER和USER_GROUP,及其映射表USER_MAPPING_USER_GROUP

USER
ID USER_ACCOUNT USER_NAME
1 zhangsan   张三
USER_GROUP
ID USER_GROUP_NAME
1 管理员组
USER_MAPPING_USER_GROUP
USER_ID USER_GROUP_ID
1 1

现在要根据传入的查询参数:USER_ACCONT和USER_GROUP_NAME 对 USER表进行分页查询,在MyBatis中使用resultMap中的collection实现一对多查询时查询返回的记录数量和总数量会出现不符合实际情况的问题,如下的sql代码所示,原因在于主表USER left join映射表USER_MAPPING_USR_GROUP和从表USER_GROUP时,返回的记录中包含主表字段(USER_ACCOUNT等)和从表字段(USER_GROUP_NAME等),自然而然就多于只查询主表返回的记录数量了。






        
        
        
        
        
        
              
              
        

如何解决该问题,pagehelper已经提示不支持上面这种情况的查询了。https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/Important.md 

解决该问题的思路很直接,手写分页逻辑就可以了,因为非常简单。

于是上面的sql查询语句就变为下面的。

  


你可能感兴趣的:(oracle,sql,oracle,pagehelper分页查询,collection,mybatis)