基于pagehelper插件实现的mybatis分页查询

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不正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值