博客
关于我
java分页工具集合
阅读量:755 次
发布时间:2019-03-22

本文共 6021 字,大约阅读时间需要 20 分钟。

Java分页工具集合

一、PageHelper

1. pom引入

在Spring Boot项目中新建,添加PageHelper的依赖:

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

2.配置

修改application.yml

spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/test1?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT+8    password: 123    username: root    type: com.alibaba.druid.pool.DruidDataSource    initialSize: 5    minIdle: 5    maxActive: 20    maxWait: 60000    timeBetweenEvictionRunsMillis: 60000    minEvictableIdleTimeMillis: 300000    validationQuery: SELECT 1 FROM DUAL    testWhileIdle: true    testOnBorrow: false    testOnReturn: false    poolPreparedStatements: true    filters: stat, wall, log4j    maxPoolPreparedStatementPerConnectionSize: 20    useGlobalDataSourceStat: true    connectionProperties: druid.stat.mergeSql=true; druid.stat.slowSqlMillis=500mybatis:  mapper-locations: classpath*:mapper/**/*.xmlpagehelper:  helperDialect: mysql  reasonable: true  supportMethodsArguments: true  pageSizeZero: false  params: count=countSql

3.使用

正确使用代码示例:

@Overridepublic PageInfo
pageQuery() { PageHelper.startPage(1, 5); List
list = userMapper.queryAll(); PageInfo
userPageInfo = new PageInfo<>(list); return userPageInfo;}

注意事项:

  • SQL语句不能以分号结尾。
  • PageHelper只适用于MyBatis框架。

错误示例:

@Overridepublic PageInfo
pageQuery() { List
list = userMapper.queryAll(); PageHelper.startPage(1, 5); PageInfo
userPageInfo = new PageInfo<>(list);}

分页失败,需确保分页参数在Mapper查询之前设置。

二、MyBatis-Plus的分页插件

1. pom引入

在Spring Boot项目中添加所需依赖:

com.baomidou
mybatis-plus-boot-starter
3.4.0

2.配置

创建MybatisPlusConfig

import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@MapperScan("com.zsc.mapper")@Configurationpublic class MybatisPlusConfig {    @Bean    public PaginationInterceptor paginationInterceptor() {        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));        return paginationInterceptor;    }}

修改application.yml

spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/test1?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT+8    password: 123    username: root    type: com.alibaba.druid.pool.DruidDataSource    initialSize: 5    minIdle: 5    maxActive: 20    maxWait: 60000    timeBetweenEvictionRunsMillis: 60000    minEvictableIdleTimeMillis: 300000    validationQuery: SELECT 1 FROM DUAL    testWhileIdle: true    testOnBorrow: false    testOnReturn: false    poolPreparedStatements: true    filters: stat, wall, log4j    maxPoolPreparedStatementPerConnectionSize: 20    useGlobalDataSourceStat: true    connectionProperties: druid.stat.mergeSql=true; druid.stat.slowSqlMillis=500mybatis-plus:  mapper-locations: classpath*:mapper/**/*.xml

3.使用

代码示例:

@Overridepublic Page
pageQuery() { Page
userPage = new Page<>(1, 5); QueryWrapper
userQueryWrapper = new QueryWrapper<>(); userQueryWrapper.like("name", "zs"); Page
page = userMapper.selectPage(userPage, userQueryWrapper); return page;}

注意事项:

  • 使用MyBatis-Plus的分页插件,默认支持自动COUNT查询。
  • 开启分页插件时,可结合PageInfoPage对象获取分页数据。

三、自定义工具类

创建PageUtil类,适用于快速开发或独立项目:

package com.zsc.utils;import java.util.ArrayList;import java.util.List;public class PageUtil {    private List myList;    private int pageNum = 1;    private int pageSize = 10;    private List data;    private int pageCount;    private int recordCount;    public boolean isHasPrePage() { return isHasPrePage; }    public void setHasPrePage(boolean hasPrePage) { isHasPrePage = hasPrePage; }    public boolean isHasNextPage() { return isHasNextPage; }    public void setHasNextPage(boolean hasNextPage) { isHasNextPage = hasNextPage; }    private int prePageIndex;    private int nextPageIndex;    private boolean firstPage;    private boolean lastPage;    private boolean isHasPrePage;    public PageUtil(List myList) {        this.myList = myList;        recordCount = myList.size();        pageCount = recordCount % pageSize == 0 ? recordCount / pageSize : (recordCount / pageSize) + 1;        isHasPrePage = pageNum == 1 ? false : true;        isHasNextPage = pageNum == pageCount ? false : true;        prePageIndex = pageNum - 1;        nextPageIndex = pageNum + 1;        firstPage = (pageNum == 1);        lastPage = (pageNum == pageCount);        data = new ArrayList<>();        for (int i = 0; i < recordCount; i++) {            if (i < (pageNum - 1) * pageSize || i >= (pageNum * pageSize)) {                data.add(myList.get(i));            }        }    }    public void setPageNum(int pageNum) {        this.pageNum = pageNum;        prePageIndex = pageNum - 1;        nextPageIndex = pageNum + 1;        firstPage = (pageNum == 1);        lastPage = (pageNum == pageCount);    }    public void setPageSize(int pageSize) {        this.pageSize = pageSize;        pageCount = (recordCount % pageSize == 0) ? (recordCount / pageSize) : (recordCount / pageSize + 1);    }    public List getData() { return data; }    public static void main(String[] args) {        List
listString = new ArrayList<>(); for (int i = 0; i < 36; i++) { listString.add("hello" + i); } PageUtil pageUtil = new PageUtil(listString); pageUtil.setPageSize(4); List
list = pageUtil.setMyList(listString); System.out.println(list); }}

使用示例:

List
list = PageService.listString();PageUtil pageUtil = new PageUtil(list);pageUtil.setPageNum(1);pageUtil.setPageSize(4);List
result = pageUtil.setMyList(list);System.out.println("分页结果:" + result);

转载地址:http://momwk.baihongyu.com/

你可能感兴趣的文章
Open-Sora代码详细解读(2):时空3D VAE
查看>>
Open-Source Service Discovery
查看>>
open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
查看>>
open3d-Dll缺失,未找到指定模块解决
查看>>
openai Midjourney代理服务 gpt大模型第三方api平台汇总 支持国内外各种大模型 持续更新中...
查看>>
OpenAll:Android打开组件新姿势【仅供用于学习了解ButterKnife框架基本原理】
查看>>
OpenASR 项目使用教程
查看>>
Openbox-桌面图标设置
查看>>
opencart出现no such file or dictionary
查看>>
OpenCV 3.1 imwrite()函数写入异常问题解决方法
查看>>
OpenCV 4.1.0版drawContours
查看>>
opencv glob 内存溢出异常
查看>>
opencv Hog Demo
查看>>
opencv Hog学习总结
查看>>
opencv Mat push_back
查看>>
opencv putText中文乱码
查看>>
OpenCV Python围绕特定点将图像旋转X度
查看>>
opencv resize
查看>>
opencv SVM分类Demo
查看>>
OpenCV VideoCapture.get()参数详解
查看>>