mybatis plus 分页查询总数为什么会保留order by
时间: 2023-08-16 17:11:26 浏览: 163
mybatis-plus分页查询的实现示例.docx
5星 · 资源好评率100%
MyBatis Plus在进行分页查询时,会保留原始的ORDER BY子句。这是因为在进行分页查询时,需要先获取满足条件的总记录数,然后再进行分页计算。而保留ORDER BY子句可以确保获取的总记录数是按照相同的排序规则进行计算的。
当执行分页查询时,MyBatis Plus会在原始的SQL语句后面添加LIMIT和OFFSET子句来实现分页功能。这样可以保证分页查询的结果是按照原始的排序规则进行排序的。
如果你希望在获取总记录数时不保留ORDER BY子句,可以尝试使用MyBatis Plus提供的方法`selectCount(Wrapper<T> wrapper)`来获取总记录数。这个方法会忽略原始SQL中的ORDER BY子句,只计算满足条件的记录数量。
例如,使用`selectCount`方法可以这样实现分页查询:
```java
// 构建查询条件
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("status", 1);
// 获取总记录数(忽略ORDER BY子句)
long total = userMapper.selectCount(wrapper);
// 分页查询(保留原始ORDER BY子句)
Page<User> page = new Page<>(pageNum, pageSize);
page.setAsc("create_time"); // 设置排序规则
IPage<User> userPage = userMapper.selectPage(page, wrapper);
List<User> userList = userPage.getRecords();
```
通过以上方式,你可以在获取总记录数时忽略ORDER BY子句,而在分页查询时保留原始的排序规则。
希望这能帮到你,如果还有其他问题,请随时提问。
阅读全文