【MyBatis】分页插件pageHelper的简单使用

pageHelper就是mybatis拦截器的一个应用,实现分页查询,支持常见的 12 种数据库的物理分页并支持多种分页方式。

使用PageHelper的好处是在实际项目开发中更方便。
原因是:在项目中我们执行一个分页查询时,很多时候还会需要知道该查询的其他信息,如总数、每页数量、当前页数、上一页或下一页等等,这些信息如果每次都自己写的话就太麻烦了,而pagehelper能够帮助我们更方便地获取这些信息,大大方便了我们的开发效率。

添加依赖

pom.xml 文件
注意导入的依赖是spring版本的而不是其独立版本,否则pagehelper将不起作用

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --> 
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.12</version>
            <scope>compile</scope>
        </dependency>

配置分页插件

在MyBatis的核心配置文件中配置插件,或者是springboot项目在springboot配置文件(applicable.yml)中声明插件

<plugins> 
  <!--设置分页插件--> 
  <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> 
</plugins>
#pagehelper分页插件配置
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

使用pageHelper实现分页功能

1、在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
pageNum:当前页的页码
pageSize:每页显示的条数
2、在查询功能获取list集合之后获取分页相关信息PageInfo page = new PageInfo<>(list, 5);
list表示分页数据;5表示当前导航分页的数量

实例:

        PageHelper.startPage(pageNo, pageSize);
        List<User> userList = userMapper.selectByTnId(tenantId);

注意:只有紧跟着PageHelper.startPage(pageNum,pageSize)的sql语句才被pagehelper起作用

常用的数据:
pageNum:当前页的页码
pageSize:每页显示的条数
size:当前页显示的真实条数
total:总记录数
pages:总页数
prePage:上一页的页码
nextPage:下一页的页码
isFirstPage/isLastPage:是否为第一页/最后一页
hasPreviousPage/hasNextPage:是否存在上一页/下一页
navigatePages:导航分页的页码数
navigatepageNums:导航分页的页码,[1,2,3,4,5]

实际使用

controller,前端传pageno和pagesize,一个是当前的页码,一个是每页显示的条数。


    @GetMapping("/user/tenantid/{tenantid}/pageno/{pageno}/pagesize/{pagesize}")
    @ResponseBody
    @ApiOperation("点击用户管理,显示规定行")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "tenantid", value = "租户id", dataType = "String", required = true),
            @ApiImplicitParam(name = "pageno", value = "页码", dataType = "int", required = true, example = "1"),
            @ApiImplicitParam(name = "pagesize", value = "每页记录数", dataType = "int", required = true, example = "10")
    })
    public CommonResult getByTenantId(@PathVariable("tenantid") String tenantId,
                                      @PathVariable("pageno") Integer pageno,
                                      @PathVariable("pagesize") Integer pagesize) {
        PageInfo<User> user = userService.getByTenantId(tenantId, pageno, pagesize);
        if (user == null) {
            return CommonResult.build(CommonResult.RESULE_DATA_NONE, CommonResult.RETURN_DATA_TEXT);
        } else {
            return CommonResult.success(CommonResult.SELECT_SUCCESS_TEXT, user);
        }
    }

service,使用pageInfo来接收查询出来的数据

    @Override
    public PageInfo<User> getByTenantId(String tenantId, int pageNo, int pageSize) {
        PageHelper.startPage(pageNo, pageSize);
        List<User> userList = userMapper.selectByTnId(tenantId);
        return new PageInfo<>(userList);
    }
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张_Laura

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值