浅谈使用PageHelper-Mybatis通用分页插件

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: https://github.com/pagehelper/Mybatis-PageHelperMybatis 框架的分页插件 PageHelper,目前支持 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 等多种数据库分页。

https://github.com/pagehelper/Mybatis-PageHelper

Mybatis 框架的分页插件 PageHelper,目前支持 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 等多种数据库分页。

插件目前支持以下数据库的物理分页 PageAutoDialect:

static {

       //注册别名

       registerDialectAlias("hsqldb",HsqldbDialect.class);

       registerDialectAlias("h2",HsqldbDialect.class);

       registerDialectAlias("phoenix",HsqldbDialect.class);

       registerDialectAlias("postgresql",PostgreSqlDialect.class);

       registerDialectAlias("mysql",MySqlDialect.class);

       registerDialectAlias("mariadb",MySqlDialect.class);

       registerDialectAlias("sqlite",MySqlDialect.class);

       registerDialectAlias("herddb",HerdDBDialect.class);

       registerDialectAlias("oracle",OracleDialect.class);

       registerDialectAlias("oracle9i",Oracle9iDialect.class);

       registerDialectAlias("db2",Db2Dialect.class);

       registerDialectAlias("informix",InformixDialect.class);

       //解决 informix-sqli #129,仍然保留上面的

       registerDialectAlias("informix-sqli",InformixDialect.class);

       registerDialectAlias("sqlserver",SqlServerDialect.class);

       registerDialectAlias("sqlserver2012",SqlServer2012Dialect.class);

       registerDialectAlias("derby",SqlServer2012Dialect.class);

       //达梦数据库,https://github.com/mybatis-book/book/issues/43

       registerDialectAlias("dm",OracleDialect.class);

       //阿里云PPAS数据库,https://github.com/pagehelper/Mybatis-PageHelper/issues/281

       registerDialectAlias("edb",OracleDialect.class);

       //神通数据库

       registerDialectAlias("oscar",OscarDialect.class);

       registerDialectAlias("clickhouse",MySqlDialect.class);

       //瀚高数据库

       registerDialectAlias("highgo",HsqldbDialect.class);

       //虚谷数据库

       registerDialectAlias("xugu",HsqldbDialect.class);

       //人大金仓数据库

       registerDialectAlias("kingbase",PostgreSqlDialect.class);

       }

<plugins>

   <!-- com.github.pagehelper为PageHelper类所在包名 -->

   <plugin interceptor="com.github.pagehelper.PageHelper">

       <property name="dialect" value="mysql"/>

       <!-- 该参数默认为false -->

       <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->

       <!-- 和startPage中的pageNum效果一样-->

       <property name="offsetAsPageNum" value="true"/>

       <!-- 该参数默认为false -->

       <!-- 设置为true时,使用RowBounds分页会进行count查询 -->

       <property name="rowBoundsWithCount" value="true"/>

       <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->

       <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->

       <property name="pageSizeZero" value="true"/>

       <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->

       <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->

       <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->

       <property name="reasonable" value="false"/>

       <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->

       <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->

       <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->

       <!-- 不理解该含义的前提下,不要随便复制该配置 -->

       <property name="params" value="pageNum=start;pageSize=limit;"/>

       <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->

       <property name="returnPageInfo" value="check"/>

   </plugin>

</plugins>


Maven配置


<!-- Pagehelper 依赖 -->

   <dependency>

     <groupId>com.github.pagehelper</groupId>

     <artifactId>pagehelper</artifactId>

     <version>5.3.2</version>

</dependency>

mybatis-config.xml主配置文件


插件插在<环境配置前面

<!--配置插件  -->

   <plugins>

       <!-- com.github.pagehelper为PageHelper类所在包名 -->

       <plugin interceptor="com.github.pagehelper.PageInterceptor"/>

   </plugins>

接口


//测试使用PageHelper

   List<User> selectALL();

Mapper

<select id="selectALL" resultType="org.example.daomain.User">

       SELECT * FROM TEST1 order by p_id

   </select>

测试类

@Test

public void selectALL(){

   SqlSession sqlSession = MyBatisUtils.getSqlSessionAuto();

   UserDao dao = sqlSession.getMapper(UserDao.class);

   //加入pagehelper的方法,分页

   //pageNum:从第1页开始

   //pagesize:每页4行数据

   PageHelper.startPage(1,4);

   List<User> users = dao.selectALL();

   users.forEach(u-> System.out.println(u));

}



7.png8.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
SQL XML Java
8、Mybatis-Plus 分页插件、自定义分页
这篇文章介绍了Mybatis-Plus的分页功能,包括如何配置分页插件、使用Mybatis-Plus提供的Page对象进行分页查询,以及如何在XML中自定义分页SQL。文章通过具体的代码示例和测试结果,展示了分页插件的使用和自定义分页的方法。
8、Mybatis-Plus 分页插件、自定义分页
|
13天前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
90 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
3天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
13天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
SQL Java 数据库连接
解决mybatis-plus 拦截器不生效--分页插件不生效
本文介绍了在使用 Mybatis-Plus 进行分页查询时遇到的问题及解决方法。依赖包包括 `mybatis-plus-boot-starter`、`mybatis-plus-extension` 等,并给出了正确的分页配置和代码示例。当分页功能失效时,需将 Mybatis-Plus 版本改为 3.5.5 并正确配置拦截器。
597 6
解决mybatis-plus 拦截器不生效--分页插件不生效
|
2月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
3月前
|
SQL Java 关系型数据库
MyBatis-Plus 分页魅力绽放!紧跟技术热点,带你领略数据分页的高效与便捷
【8月更文挑战第29天】在 Java 开发中,数据处理至关重要,尤其在大量数据查询与展示时,分页功能尤为重要。MyBatis-Plus 作为一款强大的持久层框架,提供了便捷高效的分页解决方案。通过封装数据库分页查询语句,开发者能轻松实现分页功能。在实际应用中,只需创建 `Page` 对象并设置页码和每页条数,再通过 `QueryWrapper` 构建查询条件,调用 `selectPage` 方法即可完成分页查询。MyBatis-Plus 不仅生成分页 SQL 语句,还自动处理参数合法性检查,并支持条件查询和排序等功能,极大地提升了系统性能和稳定性。
54 0
|
1月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
106 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
295 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个