• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

mybatis-pagination: MyBatis 分页插件

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

mybatis-pagination

开源软件地址:

https://gitee.com/itlangz/mybatis-pagination

开源软件介绍:

MyBatis-pagination 介绍

Mybatis 是一个优秀的 ORM 框架,平时使用的也很广泛;但它并没有提供分页的功能,好在它提供了插件的机制,允许开发者自定义处理,这样我们就可以实现一个通用的分页插件。

基本功能

  1. Mapper 查询方法中任意参数传入 com.itlangzi.mybatis.page.Pagination 对象,并正确设置 pagesize 即可认定是分页查询
  2. 支持 MySQL/Mariadb,Oracle,SQL Server 2012 分页
  3. 自动判断分页方言,无需配置, 多数据源切换后依然能正确识别分页方言
  4. 支持直接返回 com.itlangzi.mybatis.page.Pagination 对象
  5. 支持和 Spring Boot、普通使用 MyBatis 项目集成

集成说明

需要在 pom.xml 中添加依赖

<dependency>    <groupId>org.mybatis.spring.boot</groupId>    <artifactId>mybatis-spring-boot-autoconfigure</artifactId>    <version>1.3.2</version></dependency><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis-spring</artifactId>    <version>1.3.2</version></dependency>

1. 普通项目集成

MyBatis-config.xml 配置文件中添加如下配置

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <!-- .... -->    <!-- 分页工厂-->    <objectFactory type="com.itlangzi.mybatis.factory.PaginationFactory"></objectFactory>    <!--分页返回对象包装工厂-->    <objectWrapperFactory type="com.itlangzi.mybatis.factory.PaginationWrapperFactory"/>    <plugins>        <!--分页插件-->        <plugin interceptor="com.itlangzi.mybatis.interceptors.PaginationInterceptor"></plugin>    </plugins>    <!-- .... --></configuration>

2. Spring Boot 集成

需要添加依赖2.1 编码式集成

@org.springframework.context.annotation.Configurationpublic class MyBatisConfiguration implements ConfigurationCustomizer {	@Override	public void customize(Configuration configuration) {		// 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn		// 的类似映射。默认false		configuration.setMapUnderscoreToCamelCase(true);		configuration.setLogPrefix("MyBatis-");		// 设置分页工厂		configuration.addInterceptor(registryPaginationInterceptor());		configuration.setCacheEnabled(true);		// 设置自定义的分页包装类工厂		configuration.setObjectWrapperFactory(new PaginationWrapperFactory());		// 设置分页工厂		configuration.setObjectFactory(new PaginationFactory());	}	public Interceptor registryPaginationInterceptor() {		return new PaginationInterceptor();	}}

2.2 配置式集成
2.2.1 MyBatis-config.xml 中添加如下配置

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <!-- .... -->    <!-- 分页工厂-->    <objectFactory type="com.itlangzi.mybatis.factory.PaginationFactory"></objectFactory>    <!--分页返回对象包装工厂-->    <objectWrapperFactory type="com.itlangzi.mybatis.factory.PaginationWrapperFactory"/>    <plugins>        <!--分页插件-->        <plugin interceptor="com.itlangzi.mybatis.interceptors.PaginationInterceptor"></plugin>    </plugins>    <!-- .... --></configuration>

2.2.2 application.yml 添加配置

mybatis:  config-location: classpath*:mybatis/mybatis-config.xml

使用示例

DemoMapper.xml

<select id="findByPage" resultType="com.example.Demo">    select * from t_demo</select>

DemoMapper.java

class DemoMapper{    Pagination<Demo> findByPage(Demo demo, Pagination<Demo> page);}

注意事项

  1. 若使用分页,返回对象可以直接使用 List 接收,但建议返回 Pagination, 程序中会有额外的处理;直接返回 List 有内存溢出的风险;若执意要返回 List, 可以在拦截器或过滤器的后置处理中添加代码 PaginationHelper.clear();可有效防止该情况发生
  2. pagesize 字段值设置不合法(一般 page 大于等于 0, size 大于 0), 将不会进行分页处理
  3. 该项目除 mybatis 依赖外,还额外依赖 druid 用于SQL 语句的处理、slf4j-api 用于日志打印;若项目中已经有此依赖可在依赖中排除

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap