PreCondition
<!--mybatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
# mybatis分页
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
Demo
// Dao
@Select("select * from employee")
List<employee> getAll();
@Select("select * from category where type = #{type}")
List<category> getByType(category c);
@Select("select * from category")
List<category> getAll();
// Service
// 每页展示pageSize条记录,展示第pageNum页
@Override
public List<employee> getAllUserByPageF(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
return employeeDao.getAll();
}
// 每页展示pageSize条记录,展示第pageNum页,并返回其他的属性信息
@Override
public PageInfo<employee> getAllUserByPageS(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<employee> lists = employeeDao.getAll();
return new PageInfo<employee>(lists);
}
public PageInfo<category> pageSelect(Integer pageNum, Integer pageSize) {
String orderBy = "sort asc"; // 依据sort字段, 升序
PageHelper.startPage(pageNum,pageSize,orderBy);
List<category> all = categoryDao.getAll();
return new PageInfo<category>(all);
}
public List<category> getByType(category c) {
String orderBy = "sort asc,update_time desc";
PageHelper.orderBy(orderBy);
List<category> byType = categoryDao.getByType(c);
return byType;
}
// 如果需要对结果集进行处理, 需要注意
public PageInfo<dishdto> pageGetAll(Integer page, Integer pageSize, String name) {
if(name == null){
String orderBy = "update_time desc";
PageHelper.startPage(page,pageSize,orderBy);
List<dishdto> all = dishDao.getAll();
PageInfo<dishdto> listPageInfo = new PageInfo<>(all);// 得到正确的total, pages, pageNum, pageSize等值
// 对结果集进行处理
all = all.stream().map((item) -> {
category byId = categoryService.getById(item.getCategory_id());
item.setCategoryName(byId.getName());
return item;
}).collect(Collectors.toList());
// 重新设置list属性
listPageInfo.setList(all);
return listPageInfo;
}else{
PageHelper.startPage(page,pageSize);
dishdto byName = dishDao.getByName(name);
if(byName != null){
String categoryName = categoryService.getById(byName.getCategory_id()).getName();
byName.setCategoryName(categoryName);
List<dishdto> le = new ArrayList<>();
le.add(byName);
return new PageInfo<dishdto>(le);
}else{
return new PageInfo<dishdto>(new ArrayList<>());
}
}
}
PageInfo属性解析
total:数据表中存放的数据总的记录条数
pages:总页数
startRow:当前页的第一条数据在数据表中是第几行(从1开始)
endRow:当前页的最后一条数据在数据表中是第几行
pageNum:当前页是第几页(从1开始)
pageSize:一页最多显示几条数据
size:该页实际显示了几条数据等同于(endRow-startRow+1)
使用PageHelper要注意的点:
注意1:调用PageHelper.startPage
方法后下一条语句必须是你要调用的查询语句。
注意2:PageInfo
中传入的结果集,必须是我们调用查询语句返回的结果集,不能经过处理。
total和pageSize相等
PageInfo返回的total不正确
MyBatis实现分页查询
PageHelper分页+排序
pagehelper分页插件多个字段排序
PageHelper之PageInfo属性解释
从pageinfo 中取到的total不正确
PageInfo返回的total不正确