Mybatis-plus 分页 自定义count方法

起因

  • 使用了mybatisplus
  • 语句中有order by 语法
  • mybatisplus会使用 select count(*) from (子语句) TOTAL 算出total
  • 但是会报错
    • 查询条件QueryWrapper中还有order by排序条件,则生成的select count(*) from(sql) 就会报错
      除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

解决方案

自定义count语句

在mapper.xml中定义一个count方法

这个地方一定要设置返回类型是Integer ,不然不报错,也不出来数据

<select id="queryList_COUNT" resultType="java.lang.Integer">
        select count(*) from(原语句) TOTAL
select>

在page中设置count的方法

Page<WarnShift> entityPage = PageUtils.buildPage();
entityPage.setCountId("queryList_COUNT");
Page<WarnShift> warnShiftPage = this.baseMapper.queryList(entityPage, entity);

这样就既实现了排序,又不会报错

你可能感兴趣的:(java,mybatis,java,开发语言,ruoyi)