pagehelper 分页
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
properties 文件配置
> pagehelper.helper-dialect = mysql
#在web页面中做分页,pageNo,pageSize
select * from user limit (1-1),2 #第一页
select * from user limit (2-1)2,2 #第二页
select * from user limit (3-1)4,2 #第三页
pagehelper 分页非常简单
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List<Country> list = countryMapper.selectIf(1);
assertEquals(2, list.get(0).getId());
assertEquals(10, list.size());
//分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>
assertEquals(182, ((Page) list).getTotal());
@Data
public class Entity {
private Integer pageNo;
private Integer pageSize;
}
@Data
public class User extends Entity {
private int id;
private String userName;
private String password;
}
如果有很多个类,需要分页,需要使用这个字段,继承Entity 就好了
在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
使用PageInfo的用法:
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List<Country> list = countryMapper.selectAll();
//用PageInfo对结果进行包装
PageInfo page = new PageInfo(list);
//测试PageInfo全部属性
//PageInfo包含了非常全面的分页属性
assertEquals(1, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(1, page.getStartRow());
assertEquals(10, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(1, page.getFirstPage());
assertEquals(8, page.getLastPage());
assertEquals(true, page.isFirstPage());
assertEquals(false, page.isLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());
UserService 查询进行分页对返回结果进行封装成PageInfo
public PageInfo<User> query(User user){
if(user != null && user.getPageNo() != null){
PageHelper.startPage(user.getPageNo(),user.getPageSize());
}
List<User> list = userMapper.query(Maps.build().beanToMap(user));
return new PageInfo<User>(list);
}
@PostMapping("/query")
public Result query(@RequestBody User user){
PageInfo<User> pageInfo = userService.query(user);
return Result.ok(pageInfo);
}
测试