springboot-PageHelper分页-只显示一页内容+orderby排序失效解决办法

背景和配置方法在此:
springboot-bootstrapTable+PageHelper+mybatis服务端分页

只显示一页内容

就算数据库中有100条数据,但PageSize=10时也只显示1页,共计10条。把PageSize改大到50时,也只显示1页,共计50条。

经过排查,发现是bean.setTotal()这句。不需要限制,让PageHelper自己确定就可以了。

// vo存储了PageNumber和PageSize,可以看上一篇配置方法
PageHelper.startPage(vo.getPageNumber(), vo.getPageSize());
List<SysOrder> sysOrders = this.orderMapper.listOrders(vo);
// order类做了一些修改,是真正要展示在页面上的类。有的blog说这里最好不要修改,其实包一下是完全不影响的
for (SysOrder sysOrder : sysOrders) {
	Order o = new Order(sysOrder);
	o.setStrCreateTime();
	orders.add(o);
}
PageInfo bean = new PageInfo<SysOrder>(sysOrders);
bean.setList(orders);
//bean.setTotal(sysOrders.size());
return bean;

xml中orderby失效

我的mapper中使用了类似 ORDER BY q.create_time DESC 的语句,但是发现并没有排序。看下面的测试结果:

mysql> (select order_id, create_time from A order by create_time desc limit 10) union (select order_id, create_time from B order by create_time desc limit 10);
+------------+---------------------+
| order_id   | create_time         |
+------------+---------------------+
| Q*******03 | 2023-02-10 13:25:43 |
| Q*******02 | 2023-02-10 10:57:41 |
...
| S*******   | 2023-01-05 16:27:19 |
| C*******   | 2023-01-05 16:20:59 |
| C*******   | 2022-12-22 13:15:19 |
| Q*******06 | 2022-12-22 13:12:31 |
+------------+---------------------+
20 rows in set (0.01 sec)

mysql> (select order_id, create_time from A order by create_time desc ) union (select order_id, create_time from B order by create_time desc ) limit 10;
+--------------+---------------------+
| order_id     | create_time         |
+--------------+---------------------+
| S********1   | 2020-06-01 14:38:54 |
| C********    | 2020-06-01 14:49:20 |
...
| C********    | 2020-08-07 15:37:20 |
| C********    | 2020-08-07 15:52:44 |
+--------------+---------------------+
10 rows in set (0.00 sec)

mysql> (select order_id, create_time from A ) union (select order_id, create_time from B ) order by create_time limit 10;
+--------------+---------------------+
| order_id     | create_time         |
+--------------+---------------------+
| S*********   | 2020-06-01 14:38:54 |
| C******      | 2020-06-01 14:49:20 |
...
| C******      | 2020-08-07 15:37:20 |
| C******      | 2020-08-07 15:52:44 |
+--------------+---------------------+
10 rows in set (0.02 sec)

PageHelper实际是自动修改mysql语句,添加limi语句以实现分页效果,所以实际输出类似后两个,但我希望的输出是第一个。检查后发现,PageHelper的排序需要使用单独语句,也就是要在PageHelper.startPage后添加一句orderBy,类似下面这种格式(字段名 DESC或ASC):

PageHelper.startPage(vo.getPageNumber(), vo.getPageSize());
PageHelper.orderBy("create_time DESC");
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot项目中集成PageHelper分页插件的步骤如下: 1. 打开Maven库,找到com.github.pagehelper:pagehelper-spring-boot-starter。 2. 确定需要使用的版本号,比如1.4.1。 3. 在项目的pom.xml文件中添加PageHelper的依赖。可以使用如下代码: ``` <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.1</version> </dependency> ``` 4. 在application.properties或application.yml配置文件中进行配置,添加以下属性: ``` # 开启分页支持 pagehelper.helper-dialect=mysql pagehelper.reasonable=true pagehelper.support-methods-arguments=true pagehelper.params=count=countSql ``` 这里的配置是针对MySQL数据库的,如果你使用的是其他数据库,需要根据对应的数据库类型进行配置。 5. 在需要分页的Mapper方法上使用PageHelper.startPage方法来开启分页功能。例如: ``` @Mapper public interface UserMapper { List<User> getUsers(); } ``` 在UserMapper接口中的方法上加上注解@Select,并在方法内部使用PageHelper.startPage方法开启分页,如下所示: ``` @Select("SELECT * FROM user") List<User> getUsers(); ``` 6. 运行项目,分页功能就会生效。 通过以上步骤,你就可以在Spring Boot项目中成功集成PageHelper分页插件了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot整合分页插件PageHelper](https://blog.csdn.net/weixin_42408447/article/details/117528795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Springboot集成pagehelper 分页插件](https://blog.csdn.net/weixin_58696998/article/details/124397756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值