栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring/SpringBoot-PageHelper(分页)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring/SpringBoot-PageHelper(分页)

1. PageHelper 1.1 PageHelper 是什么

PageHelper:MyBatis 的一个分页插件。

 

1.2 Maven 依赖

PageHelper 的实现依赖自 com.github.pagehelper

PageHelper on GitHub : PageHelper

Spring:


    com.github.pagehelper
    pagehelper
    5.2.0

Spring Boot :


   com.github.pagehelper
   pagehelper-spring-boot-starter
   1.4.0

1.3 PageHelper 配置

使用 PageHelper 时,我们常常需要单独配置它的属性,在 Spring Boot 与 Spring 中配置方法有所不同。

 Using in mybatis-config.xml


    
        
        
	

 Using in Spring application.xml


  
  
    
      
        
          
          
            param1=value1
          
        
      
    
  

 Using in Spring Boot application.yml

pagehelper:
  param1: value1
  param2: value2
  ...
1.4 PageHelper 属性

PageHelper 为我们提供了许多可配置的属性,具体配置时根据环境的不同选择上方的配置方法。

配置的属性类实现自 Dialect 接口,想要自定义属性可以实现该接口!PageHelper 类也是是实现了该接口。

 常用属性:

  • helperDialect:配置数据库类型,由此自动选择合适的分页方式。

    • Options:oracle、mysql、db2、sqlserver …
  • reasonable:分页合理化参数,默认值为false

    • false:直接根据参数进行查询
    • true:pageNum<=0 时会查询第一页, pageNum>pages(总页数),会查询最后一页
  • params:为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值

    • Options:pageNum、pageSize、count、pageSizeZero、reasonable
    • Default:pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero
  • supportMethodsArguments:支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据 params 配置的字段中取值,查找到合适的值时就会自动分页

  • pageSizeZero:默认值为 false

    • true:如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果

 其他属性:

  • offsetAsPageNum:默认值为 false,该参数对使用 RowBounds 作为分页参数时有效
    • true:会将 RowBounds 中的 offset 参数当成 pageNum 使用,可以用页码和页面大小两个参数进行分页
  • rowBoundsWithCount:默认值为false,该参数对使用 RowBounds 作为分页参数时有效。
    • true:使用 RowBounds 分页会进行 count 查询
  • autoRuntimeDialect:默认值为 false
    • true:允许在运行时根据多数据源自动识别对应方言的分页
  • closeConn:默认值为 true
    • true:当使用运行时动态数据源或没有设置 helperDialect 属性自动获取数据库类型时,会自动获取一个数据库连接, 通过该属性来设置是否关闭获取的这个连接
    • false:不会关闭获取的连接,这个参数的设置要根据自己选择的数据源来决定。
2. Spring 中使用

下面将在SSM框架中使用 PageHelper!

IDEA:2021.2

Tomcat:8.5.39

Maven:3.8.2

PageHelper:5.2.0

依赖:


    com.github.pagehelper
    pagehelper
    5.2.0

2.1 配置属性

在 Spring 的配置文件中配置属性。

ApplicationContext.xml


    
    
    

    
    
        
            
                
                    
                        
                        mysql
                        
                        true
                    
                
            
        
    


2.2 Service

我们不需要修改Mapper中的东西,但需要保证我们已经有了全查的方法。

在 Service 接口中添加一个抽象方法:

PageInfo queryList(Integer pageNum, Integer pageSize);

pageNum:分页后的页数

pageSize:每页数据记录的条数

PageInfo 中还有很多的参数,就不一一举例了!

2.3 ServiceImpl

在 Service 的实现类中,实现上面写的抽象方法:

public PageInfo queryList(Integer pageNum, Integer pageSize) {
    // 如果使用分页,先调用startPage
    PageHelper.startPage(pageNum,pageSize);
    // 调取Mapper的getAllUser方法,查询所有数据
    List allUser = userMapper.getAllUser();
    // 将所有数据放入到分页类中
    PageInfo userPageInfo = new PageInfo<>(allUser, pageSize);
    return userPageInfo;
}
2.4 Controller
@RequestMapping("/getAllUser")
public String getAllUser(Model model, HttpServletRequest request){

    // 获取页面传入的页面编号,若值为空则赋1,否则将获取页面编号赋给pageNum
    int pageNum = request.getParameter("pageNum")==null ? 1 : Integer.valueOf( request.getParameter("pageNum"));
    
    // 每页显示几条数据
    int pageSize = 3; 

    // 存放当前页显示的信息
    PageInfo pageInfo = userService.queryList(pageNum, pageSize);

    // 当前的总页数
    model.addAttribute("pages",pageInfo.getPages());

    // 获取当前页码
    model.addAttribute("pageNum",pageInfo.getPageNum());

    // 获取前端页面显示的数量
    model.addAttribute("pageSize",pageInfo.getPageSize());

    model.addAttribute("userList",pageInfo.getList());

    return "userlist";
}
2.5 JSP

JSP中添加如下div(应该能看懂吧):

    共${pages}页
    当前第${pageNum}页
    
        首页
    
    
        
            |上一页
        
    
    |
    
        
            下一页|
        
    
    
        尾页
    

2.6 测试

3. Spring Boot 中使用

依赖:


   com.github.pagehelper
   pagehelper-spring-boot-starter
   1.4.0

3.1 配置属性

在 Spring Boot 的配置文件中配置属性。

application.yml

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  page-size-zero: true
3.2 Service
PageInfo queryList(Integer pageNum, Integer pageSize);
3.3 ServiceImpl
@Override
public PageInfo queryList(Integer pageNum, Integer pageSize) {
    // 如果要使用分页,先调用startPage方法
    PageHelper.startPage(pageNum, pageSize);
    // 查询所有数据
    List all = getAll();
    // 将所有的数据存放至分页的类中
    PageInfo pageInfo = new PageInfo<>(all, pageSize);
    return pageInfo;
}
3.4 Controller
@RequestMapping("/emps")
public String list(Model model, HttpServletRequest request) {
    int pageNum = request.getParameter("pageNum")==null ? 1 : Integer.valueOf( request.getParameter("pageNum"));
    int pageSize = 3;
    PageInfo pageInfo = employeeService.queryList(pageNum, pageSize);
    model.addAttribute("pages",pageInfo.getPages());
    model.addAttribute("pageNum",pageInfo.getPageNum());
    model.addAttribute("pageSize",pageInfo.getPageSize());
    model.addAttribute("employees",pageInfo.getList());
    return "list";
}
3.5 HTML

3.6 测试

4. 写在最后

在Spring、Spring Boot 中使用 PageHalper 时导入的依赖不一样!

在Spring、Spring Boot 中配置属性时的方法不一样!

 


❤️ END ❤️
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/354230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号