PageHelper分页查询数据错乱,有些数据不显示,和数据库查询对不上

今天遇到一个很意外的错误,使用PageHelper分页查询时,分页的数据总是和数据库查询的对不上,

分页代码如下:

 public ReturnInfo getManage(RequestPage param) {
        SplitPageInfo splitPageInfo = param.getPage();
        if (null != param.getPage()) {
            PageHelper.startPage(param.getPage().getCurrPage(),param.getPage().getPerPageNum());
        }
        List list = superUserMapper.selectManage(null, param.getInfo().getUser_name().trim());

        PageInfo p = new PageInfo(list);
        param.getPage().setTotals((int) p.getTotal());
        return new ReturnInfo(splitPageInfo, list);
    }

查询sql 如下:

 select
        (select count(1) from customer c where c.manage_id=user_id) as cuscount,
        
        from super_user
        
        
            and user_id = #{manageId,jdbcType=INTEGER}
        
        
            and (user_name like CONCAT('%',#{user_name},'%') or user_qname like CONCAT('%',#{user_name},'%'))
        
        
        order by user_type

但是会发现,分页时,数据有重复数据,而且和数据库的查询不一致

查了好久,仔细检查后发现
由于加了order by user_type 而我的user_type 只是1或者2
表结构如下:注意 user_type 有重复
PageHelper分页查询数据错乱,有些数据不显示,和数据库查询对不上_第1张图片
这时候如果仅仅根据user_type 排序,分页会造成数据错乱,
解决方法,在order by 后面加上user_id,user_type 组合排序

你可能感兴趣的:(mybatis)