PageHelper需要修改列表的情况下的使用

1.PageHelper分页使用方式

PageHelper.startPage(pageNum,pageSize);
List<Student> list = stuMapper.listStuById(id, type);
List<Student> newList = new ArrayList<>();
//此处省略对list的处理(list处理后存入newList,对newList分页)
PageInfo pageInfo = new PageInfo<>(newList);
return pageInfo;

这样返回的pageInfo就是newList的分页了
试过以下方式,没能把list分页改为newList,两者的区别是直接new PageInfo时传输的数组不同

PageHelper.startPage(pageNum,pageSize);
List<Student> list = stuMapper.listStuById(id, type);
PageInfo pageInfo = new PageInfo<>(list);
List<Student> newList = new ArrayList<>();
//此处省略对list的处理(list处理后存入newList,对newList分页)
pageInfo.setList(newList);
return pageInfo;

2.PageHelper依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>
### 如何使用 PageHelper 进行分页并实现字段排序 PageHelper 是 MyBatis 的一款高效分页插件,支持多种数据库的分页操作,并提供了简单的 API 来完成复杂的分页需求。在实际开发中,除了基本的分页功能外,还经常需要对数据按照某个字段进行排序。 #### 添加依赖 为了使用 PageHelper 插件,在项目中需引入其 Maven 或 Gradle 依赖。以下是 Spring Boot 中常用的依赖配置: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> ``` #### 配置 PageHelper 在 `application.yml` 文件中添加 PageHelper 的基础配置项,例如指定方言(dialect),以便适配不同的数据库环境[^3]。 ```yaml pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql ``` #### 使用 PageHelper 设置分页与排序 下面是一个完整的示例代码,展示如何利用 PageHelper 完成分页的同时实现字段排序的功能。 假设有一个实体类 `User` 和对应的 Mapper 接口 `UserMapper`,其中定义了一个查询方法 `selectUsers()`。 ##### Java 示例代码 ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; public List<User> getUserListWithPaginationAndSort(int pageNum, int pageSize, String orderBy) { // 开启分页模式,pageNum 表示当前页码,pageSize 表示每页显示条数 PageHelper.startPage(pageNum, pageSize); // 如果需要排序,则传入 order by 字段名和顺序 (asc/desc),多个字段可以用逗号隔开 if (orderBy != null && !"".equals(orderBy.trim())) { PageHelper.orderBy(orderBy); } // 执行查询语句 List<User> userList = userMapper.selectUsers(); // 获取分页后的 PageInfo 对象 PageInfo<User> pageInfo = new PageInfo<>(userList); return userList; // 返回分页后的结果集 } ``` 上述代码片段展示了如何通过调用 `PageHelper.startPage` 方法开启分页,并通过 `PageHelper.orderBy` 方法设置排序规则[^1]。 #### 测试与验证 执行以上代码后,可以通过打印 SQL 日志来确认最终生成的 SQL 是否包含了正确的分页和排序逻辑。通常可以在控制台看到类似于以下的日志输出: ```sql SELECT * FROM users ORDER BY id DESC LIMIT 0, 10; ``` 这表明已经成功实现了基于字段 `id` 的降序排列以及第一页、每页十条记录的分页效果。 --- ### 注意事项 - **SQL 注入风险**:当动态拼接 `ORDER BY` 子句时,请务必注意防止潜在的安全隐患,建议仅允许白名单内的字段参与排序。 - **性能优化**:对于大数据量场景下的复杂排序操作,应考虑索引的设计以提升查询效率[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值