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

举报
Laura_张 发表于 2022/08/26 23:33:56 2022/08/26
【摘要】 pageHelper就是mybatis拦截器的一个应用,实现分页查询,支持常见的 12 种数据库的物理分页并支持多种分页方式。 使用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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

配置分页插件

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

<plugins> 
  <!--设置分页插件--> 
  <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> 
</plugins>

  
 
  • 1
  • 2
  • 3
  • 4
#pagehelper分页插件配置
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用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);

  
 
  • 1
  • 2

注意:只有紧跟着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);
        }
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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);
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

文章来源: blog.csdn.net,作者:张艳伟_Laura,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Laura__zhang/article/details/124069641

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。