Springboot pageHelper总结
Springboot上使用pageHelper总结
1. 在pom.xml 中引入依赖
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
之后直接在要访问数据库的mapper接口之前使用pageHelper即可,十分简单
@PostMapping("/allUser")
public PageInfo<User> allUser() {
PageHelper.startPage(2,3);
List<User> users = userMapper.findAllUser();
PageInfo<User> pageInfo = new PageInfo<>(users);
return pageInfo;
}
经测试,这里实际上是执行了两条SQL语句(与我的猜测一致)
c.g.m.m.UserMapper.findAllUser_COUNT : ==> Preparing: SELECT count(0) FROM user
c.g.m.m.UserMapper.findAllUser_COUNT : ==> Parameters:
c.g.m.m.UserMapper.findAllUser_COUNT : <== Total: 1
c.g.m.mapper.UserMapper.findAllUser : ==> Preparing: SELECT * FROM user LIMIT ?, ?
c.g.m.mapper.UserMapper.findAllUser : ==> Parameters: 3(Integer), 3(Integer)
c.g.m.mapper.UserMapper.findAllUser : <== Total: 3
执行了一条统计总数(where 真正要执行的sql的条件)的SQL 和 真正的SQL
顺便检查出来了我的一个SQL上理解的错误:
Limit x, y 指的是从x的下一条数据开始,包含y条数据数据的集合(不包含x)
2. 执行的mapper接口一旦在上面使用了PageHelper.startPage(x,y); 之后返回的对象其实不再是List对象了,而是一个Page对象(继承于ArrayList)
class Page<E> extends ArrayList<E> implements Closeable
Page 对象中保存了两次SQL返回的信息,这样就得到了total的值
PS: 经测试如果mapper接口之上没有使用PageHelper.startPage(x,y);则返回的还是ArrayList
3. 要拿到total的值需要用PageInfo做一层封装即可
PageInfo<User> pageInfo = new PageInfo<>(users);
本文作者:明月照江江的技术博客
本文链接:https://www.cnblogs.com/gradyblog/p/16152618.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步