zoukankan      html  css  js  c++  java
  • Spring Boot入门系列(十六)使用pagehelper实现分页功能

    之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类、mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能。接下来要说一说Mybatis 的分页功能:使用Mybatis-PageHelper插件,实现分页功能。Spring Boot入门系列文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html

    一、pagehelper介绍

    pageHelper是一款非常简单、易用的分页插件,它能很好的集成在spring boot中。它是一个基于mybatis的一款插件,所以我们在使用它时,我们需要使用mybatis作为持久层框架。

    github地址是https://github.com/pagehelper/Mybatis-PageHelper

    二、快速开始

    如果我们需要使用pageHelper的话,我们需要在spring boot项目中引入pageHelper的依赖。之前介绍过Spring Boot整合mybatis,这里就不介绍了。《Spring Boot入门系列(六)Spring Boot如何使用Mybatis XML 配置版【附详细步骤】》 。

    1、pom 配置

    增加pageHelper的依赖

            <!-- pagehelper -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
            </dependency>

    注意:spring boot 引入的jar包必须是要pagehelper-spring-boot-starter ,如果单独引入pagehelper的话,会提示错误。

    2、application.properties增加pagehelper 配置

    # 分页框架
    pagehelper.helperDialect=mysql
    pagehelper.reasonable=true
    pagehelper.supportMethodsArguments=true
    pagehelper.params=count=countSql

    说明: 

      helperDialect : 指定数据库,可以不配置,pagehelper插件会自动检测数据库的类型。

      resonable : 分页合理化参数默认false,当该参数设置为true 时,pageNum <= 0 时,默认显示第一页,pageNum 超过 pageSize 时,显示最后一页。

      params : 用于从对象中根据属性名取值,可以配置pageNum,pageSize,count 不用配置映射的默认值。

      supportMethodsArguments : 分页插件会根据查询方法的参数中,自动根据params 配置的字段中取值,找到合适的值会自动分页。 

    到这里配置就完成了,在Springboot中整合就是这么简洁,约定大约配置的方式,大量的减少了配置文件的使用 。

    3、实现分页

    在原来的UserService类和UserServiceImpl 类中,增加 queryUserListPaged 接口和对应的方法实现。

        @Override
        public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize) {
            // 开始分页
            PageHelper.startPage(page,pageSize);
            Example example = new Example(SysUser.class);
            Example.Criteria criteria = example.createCriteria();
    
            if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) {
                criteria.andLike("username", "%" + user.getUsername() + "%");
            }
    
            if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
                criteria.andLike("nickname", "%" + user.getNickname() + "%");
            }
    
            List<SysUser> userList = userMapper.selectByExample(example);
    
            return userList;
        }

    分页的核心就一行代码, PageHelper.startPage(page,pageSize); 这个就标识开始分页。加了这个之后pagehelper 插件就会通过其内部的拦截器,将执行的sql语句,转化为分页的sql语句。

    注意:使用时PageHelper.startPage(pageNum, pageSize)一定要放在列表查询的方法中,这样在查询时会查出相应的数据量且会查询出总数。

    4、在原来的MybatisController 控制器中增加如下方法:

    @RequestMapping("/queryUserListPaged")
        public JSONResult queryUserListPaged(Integer page) {
            if (page == null) {
                page = 1;
            }
    
            int pageSize = 10;
    
            SysUser user = new SysUser();
    
            List<SysUser> userList = userService.queryUserListPaged(user, page, pageSize);
    
            return JSONResult.ok(userList);
        }

    说明:

      调用的方法,只需将page页码,和pageSize 每页多少条这两个字段传入即可。 

    最后

    以上,就把Spring Boot集成pagehelper插件,实现分页功能介绍完了。还是比较简单的。

    这个系列课程的完整源码,也会提供给大家。大家关注我的微信公众号(架构师精进),回复:springboot源码。获取这个系列课程的完整源码。

  • 相关阅读:
    mysql设置用户密码规则
    jsonp格式前端发送和后台接受写法
    MySql数据库中正则表达式
    linux中服务(service)管理
    第50课 C++对象模型分析(上)
    第49课 多态的概念和意义
    第42课
    第41课
    深入理解MyBatis中的一级缓存与二级缓存
    hibernate一级缓存和二级缓存的区别
  • 原文地址:https://www.cnblogs.com/zhangweizhong/p/13026857.html
Copyright © 2011-2022 走看看