SpringBoot使用PageHelper时pageSize=Size并且等于数据库总条数
使用PageHelper时,pagesize=size=total问题处理
SpringBoot使用PageHelper时pageSize=Size并且等于数据库总条数
在SprinBoot项目中需要使用分页功能,由于ORM使用的是Mybatis,所以这里我选择了PageHelper来完成分页操作,我的实现方式如下:
1. Entity层
首先是我操作的entity对象,这里为Role
类
2. mapper层
然后是mapper层的 RoleMapper.Impl
以及RoleMapper.xml
,只需要全部查询的语句即可也就是Select * from xxx
,这里因为我的语句因为要处理一些其他的问题,所以复杂了些。
Rolemapper.Impl:
// 该方法就是查询所有所需对象方法,因为我有一些其他的需求所以复杂了些,正常一般不需要传参
public List<Role> getAllRole(@Param("exchangeRage") double exchangeRage);
RoleMapper.xml:
<select id="getAllRole" resultMap="rolemap">
select id, name, money * #{exchangeRage} as money, version, start_date, end_date from role
</select>
3. Service层
public PageInfo<Role> getPageRole(int pageNumber, int pageSize){
//设置分页
PageHelper.startPage(pageNumber, pageSize);
List<Role> pageRole = roleMapper.getAllRole(tool.getExchangeRage());
return new PageInfo<>(pageRole);
}
这里需要注意,初始化PageHelper之后,也就是执行了PageHelper.startPage(pageNumber, pageSize);
之后,下一行代码需要接上操作数据库的代码,否则会导致分页失效!
4. Controller层
@GetMapping("/getpagerole")
public PageInfo<Role> getPageRole(@RequestParam(value = "pageNumber", defaultValue = "1") int pagenumber, @RequestParam(value = "pageSize", defaultValue = "10") int pagesize){
return roleService.getPageRole(pagenumber, pagesize);
}
5. 测试
启动项目,浏览器或者Postman,输入地址:http://localhost:8083/role/getpagerole?pageNumber=1&pageSize=5
注:这里的端口号每个人不同,SpringBoot默认是8080
结果如下:
发现pageSize=size=total,也就是数据库数据总条数,也就是说分页未完成,于是在网上找了一堆方法去处理,其中最符合我的问题情况的就是上面提到的,需要把数据库操作的mapper语句紧跟到PageHelper.StartPage之后,然而我本身就是这样写的。
最后试着换了一下较新的PageHelper版本,刷新maven,再次尝试,发现成功!
正常显示!!!
说白了,需要注意版本的问题,这里我的版本是:
SpringBoot:3.1.1
Mybatis:3.0.2
PageHelper:1.4.6
注意后面两个导maven包是导的xxx-spring-boot-starter
6. 帮助连接
SpringBoot:spring.io/projects/spring-boot/
PageHelper:MyBatis 分页插件 PageHelper
Maven仓库:Maven Repository: Search/Browse/Explore (mvnrepository.com)
更多推荐
所有评论(0)