MyBatis 分页插件 PageHelper 6.0.0 发布


MyBatis Pagination - PageHelper

6.0.0 - 2023-11-05

  • 基于jdk8适配,6.0开始不支持jdk6和7,如果有需要可以使用5.x版本
  • 增加异步count支持,全局配置asyncCount,默认false,单次设置:PageHelper.startPage(1, 10).enableAsyncCount(); 异步使用独立连接(事务)查询,有增删改操作影响查询时不适合开启异步查询。closed #334
  • JSqlParser默认开启 parser.withSquareBracketQuotation(true),支持 SqlServer []
  • feat: 在PageInfo类中新增了用以进行数据对象转换的方法  <E> PageInfo<E> convert(Page.Function<T, E> function) by codeke
  • CountSqlParser改为接口,允许通过countSqlParser参数替换为自己的实现,支持 #772
  • dialectAlias支持简化配置,例如dm=oracle;oracle=oracle9i,直接引用现在的缩写,不用写类全名
  • countColumn添加注入检测,fixed #686
  • 增加PageParam类,不内嵌对象(会影响使用),如果想用可以继承该对象,closed #562
  • 所有异常信息改为英文提示
  • 放开 setLocalPage,支持 #771
  • 解决sqlserver带union sql解析时处理order by错误的问题,fixed #768
  • 优化total逻辑,解决指定不分页查询,同时指定order by时无效的问题,fixed #641
  • 修改 dialect 实例化逻辑,保证类完成配置后使用,fixed #742
  • dialectAliasMap改为LinkedHashMap,可以按配置顺序进行匹配,fixed #758
  • 行云数据库分页BUG修复 by maimaitiyaer_bonc

该插件目前支持以下数据库的物理分页 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("as400",AS400Dialect.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("impala",HsqldbDialect.class);
registerDialectAlias("firebirdsql",FirebirdDialect.class);
//人大金仓数据库
registerDialectAlias("kingbase",PostgreSqlDialect.class);
// 人大金仓新版本kingbase8
registerDialectAlias("kingbase8",PostgreSqlDialect.class);
//行云数据库
registerDialectAlias("xcloud",CirroDataDialect.class);

//openGauss数据库
registerDialectAlias("opengauss",PostgreSqlDialect.class);

//注册 AutoDialect
//想要实现和以前版本相同的效果时,可以配置 autoDialectClass=old
registerAutoDialectAlias("old",DefaultAutoDialect.class);
registerAutoDialectAlias("hikari",HikariAutoDialect.class);
registerAutoDialectAlias("druid",DruidAutoDialect.class);
registerAutoDialectAlias("tomcat-jdbc",TomcatAutoDialect.class);
registerAutoDialectAlias("dbcp",DbcpAutoDialect.class);
registerAutoDialectAlias("c3p0",C3P0AutoDialect.class);
//不配置时,默认使用 DataSourceNegotiationAutoDialect
registerAutoDialectAlias("default",DataSourceNegotiationAutoDialect.class);
}

如果你使用的数据库不在这个列表时,你可以配置 dialectAlias 参数。

这个参数允许配置自定义实现的别名,可以用于根据 JDBCURL 自动获取对应实现,允许通过此种方式覆盖已有的实现,配置示例如(多个配置时使用分号隔开):

<property name="dialectAlias" value="oracle=com.github.pagehelper.dialect.helper.OracleDialect"/>
<!-- 6.0支持下面的引用方式,引用 Oracle9iDialect.class 的实现 -->
<property name="dialectAlias" value="oracle=oracle9i"/>
<!-- 6.0支持下面的引用方式,达梦使用oracle语法分页,简化类全名写法 -->
<property name="dialectAlias" value="dm=oracle"/>

PageHelper Spring Boot Starter 发布 2.0.0

v2.0.0 - 2023-11-05

  • 升级 PageHelper 到 6.0.0,支持异步 count 等功能,详细查看 6.0
  • 升级 MyBatis 到 3.5.15
  • 升级 springboot 到 2.7.17
  • 新增参数 asyncCount,增加异步count支持,默认false,单次设置:PageHelper.startPage(1, 10).enableAsyncCount();
  • 新增参数 countSqlParserCountSqlParser改为接口,允许通过countSqlParser参数替换为自己的实现

在 pom.xml 中添加依赖:

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

相關推薦

2023-09-26

象 支持多种方式传参 支持前端多排序 复杂排序 采用 PageHelper 仅支持单查询分页 参数只能从param传 只能单排序 功能扩展性差 体验不好 数据权限 采用 Mybatis-Plus 插件 自行分析拼接SQL 无感式过滤 只需为Mapper设置好注解条

2023-11-28

象 支持多种方式传参 支持前端多排序 复杂排序 采用 PageHelper 仅支持单查询分页 参数只能从param传 只能单排序 功能扩展性差 体验不好 数据权限 采用 Mybatis-Plus 插件 自行分析拼接SQL 无感式过滤 只需为Mapper设置好注解条

2023-11-28

象 支持多种方式传参 支持前端多排序 复杂排序 采用 PageHelper 仅支持单查询分页 参数只能从param传 只能单排序 功能扩展性差 体验不好 数据权限 采用 Mybatis-Plus 插件 自行分析拼接SQL 无感式过滤 只需为Mapper设置好注解条

2023-11-15

象 支持多种方式传参 支持前端多排序 复杂排序 采用 PageHelper 仅支持单查询分页 参数只能从param传 只能单排序 功能扩展性差 体验不好 数据权限 采用 Mybatis-Plus 插件 自行分析拼接SQL 无感式过滤 只需为Mapper设置好注解条

2023-11-16

象 支持多种方式传参 支持前端多排序 复杂排序 采用 PageHelper 仅支持单查询分页 参数只能从param传 只能单排序 功能扩展性差 体验不好 数据权限 采用 Mybatis-Plus 插件 自行分析拼接SQL 无感式过滤 只需为Mapper设置好注解条

2023-05-18

特点介绍: sqltoy 的核心构建思想 sqltoy 的对比 mybatis (plus) 的核心点:查询语句编写、可阅读性、可维护性 对象化 crud 是基础,但 sqltoy 有针对性的改进:update、updateSaveFetch、updateFetch 等 sqltoy 的缓存翻译,

2023-06-30

特点介绍: sqltoy 的核心构建思想 sqltoy 的对比 mybatis (plus) 的核心点:查询语句编写、可阅读性、可维护性 对象化 crud 是基础,但 sqltoy 有针对性的改进:update、updateSaveFetch、updateFetch 等 sqltoy 的缓存翻译,

2023-07-21

特点介绍: sqltoy 的核心构建思想 sqltoy 的对比 mybatis (plus) 的核心点:查询语句编写、可阅读性、可维护性 对象化 crud 是基础,但 sqltoy 有针对性的改进:update、updateSaveFetch、updateFetch 等 sqltoy 的缓存翻译,

2023-07-12

特点介绍: sqltoy 的核心构建思想 sqltoy 的对比 mybatis (plus) 的核心点:查询语句编写、可阅读性、可维护性 对象化 crud 是基础,但 sqltoy 有针对性的改进:update、updateSaveFetch、updateFetch 等 sqltoy 的缓存翻译,

2023-11-25

还在mybatis?mybatis-plus、plus、plus?不下20个了吧?mybaits-plus,mybatis-fluent、mybatis-flex、 mybatis-mp多少开发者因此不眠? 且所有的发力点集中于:为mybatis实现jpa功能,用java lambda模式拟合sql,建议大家可以深度了解一下sqltoy,相信

2023-05-11

口说明文档,感谢 @王帅 文档:常见问题添加关于 PageHelper 集成的相关文档   和其他框架对比请参考: 1、和 MyBatis-Plus 、Fluent-Mybatis 功能方面的对比:https://mybatis-flex.com/zh/intro/comparison.html 2、和 M

2024-04-09

样方便我们修改和优化,为了帮助开发者进行自动分页 mybatis-mp: 实现了xml 或者 注解 @Select("xxxxsql") 实现自动分页: 1.xml select <select id="xmlPaging"> select * from sys_role where id >= #{id} and id &lt;= #{id2} order by id asc </select&g

2024-02-08

构造器、INSERT 策略、多语句 / 多结果。并兼容 Spring 及 MyBatis 用法。 它不依赖任何其它框架,因此可以很方便的和任意一个框架整合在一起使用。 依赖 <dependency> <groupId>net.hasor</groupId> <artifactId>dbvisitor</a

2023-12-16

全新一代基于 mybatis 扩展的 orm 框架,拥有良好的性能和扩展性。 1:基于注解,映射数据库; 2:支持多表 join 和返回; 3:api 采用 lambda 和 stream 流式设计; 4:内置分页以及超强的 sql 优化功能; 5:稳定且性能极优; 6: