开源信息:欢迎使用支持12种数据库的自动分页插件

MyBatis-Pageable是一款自动化分页的插件,基于MyBatis内部的插件Interceptor拦截器编写完成,拦截Executor.query的两个重载方法计算出分页的信息以及根据配置的数据库Dialect自动执行不同的查询语句完成总数量的统计。

支持的数据库

MyBatis-Pageable目前支持的主流数据库:

  • DB2
  • Derby
  • DM、
  • H2、
  • HSQL、
  • InforMix、
  • Mariadb、
  • MySQL、
  • Oracle、
  • Postgres、
  • SqlLite、
  • SqlServer2000以上版本

快速开始

MyBatis-Pageable可以在传统的Spring项目内使用,也可以在最新SpringBoot项目内使用。

SpringBoot集成

MyBatis-Pageable目前已经上传到Maven中央仓库,你可以随时配置依赖使用,如果你是Maven管理的项目,复制如下代码到你的pom.xml配置文件内:

<dependency>
     <groupId>com.gitee.hengboy</groupId>
     <artifactId>spring-boot-starter-mybatis-pageable</artifactId>
     <version>{lastVersion}</version>
 </dependency>

如果你使用的Gradle管理的项目,那么你需要复制如下的代码到你们的build.gradle文件内:

compile 'com.gitee.hengboy:mybatis-pageable:{lastVersion}'

注意:上面内容需要把{lastVersion}改成目前最新版本的MyBatis-Pageable版本号

配置插件

添加完成 starter依赖后,你可以在配置文件application.yml或者application.properties内完成配置,下面是yml格式配置:

hengboy:
  pageable:
      dialect: mysql

在使用pageable时你仅仅需要配置一个数据库方言,如果你使用MySQL或者MariaDB数据库你可以不配置数据库方言。

传统Spring集成

使用mybatis-config.xml 配置插件

如果你项目中配置使用了mybatis-config.xml,那么你需要添加如下代码到你的配置文件:

<plugins>
    <plugin interceptor="com.gitee.hengboy.mybatis.pageable.interceptor.MyBatisExecutePageableInterceptor">
        <!-- 配置数据库方言 -->
        <property name="dialect" value="mysql"/>
    </plugin>
</plugins>
使用application.xml 配置插件

当然你如果不使用mybatis-config.xml配置文件配置插件,也可以通过SqlSessionFactoryBean的插件列表来完成集成MyBatis-Pageable,如下配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <!-- 配置插件列表 -->
  <property name="plugins">
    <array>
      <bean class="com.gitee.hengboy.mybatis.pageable.interceptor.MyBatisExecutePageableInterceptor">
        <property name="properties">
          <!-- 配置数据库方言 -->
          <value>
            dialect=mysql
          </value>
        </property>
      </bean>
    </array>
  </property>
</bean>

怎么使用?

目前MyBatis-Pageable使用比较简单,有一个分页请求类PageableRequest来完成自动分页操作,我们来看个简单的示例:

Page<UserEntity> page = PageableRequest.of(1, 5).request(() -> userMapper.selectAll());
  • of 配置分页的当前页码以及每页的限制条数
  • request 该方法需要传递一个夜晚逻辑方法,也就是你需要执行分页的方法

Page对象详解

在上面简单的一行代码就可以完成自动分页以及读取出分页相关的信息,分页执行后我们通过Page对象都可以获取到什么内容呢?

  • data 分页后的数据列表,具体的返回值可以使用Page<T>泛型接收
  • totalPages 总页数
  • totalElements 总条数
  • pageIndex 当前页码
  • pageSize 每页限制条数
  • offset 分页开始位置
  • endRow 分页结束位置
  • hasNext 是否存在下一页,true:存在,false:不存在
  • hasPrevious 是否存在上一页,true:存在,false:不存在
  • isFirst 是否为首页,true:首页,false:非首页
  • isLast 是否为末页,true:末页,false:非末页

翻页查询

实际开发过程中存在这种情况,虽然传递的分页页码为1,但是种种判断过后我需要查询上一页或者下一页首页的数据,这时候你就可以PageableRequest对象的next()previous()first()方法来处理这种事情的发生,如下示例:

Pageable pageable = PageableRequest.of(2, 10);
        if (xx = xx) {
            pageable.next();
        }
        Page<UserEntity> page = pageable.request(()->userMapper.selectAll());

上面是翻页到下一页的查询示例,当然这个功能是为了尽可能的方便分页的使用,同样的previous()first()方法都可以这么使用。

学习目录推荐

码云地址:https://gitee.com/hengboy/mybatis-pageable

其他开源信息

这段时间一直在编写开源的相关框架,致力于公司使用的框架升级以及开源计划,将公司使用到的工具以及插件进行升级重构并且开源。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI星球

如何在ubuntu 16.04 下安装 Tensorflow

如果系统没有安装 gcc 则会提示 command not found。这时要先安装 gcc。

1942
来自专栏小狼的世界

Analog使用中的一些技巧和总结

Analog是一款用来快速处理日志的开源工具,具有很高的效率,但是生成的结果并不美观,本文就analog使用过程中的一些问题进行总结,讨论如何对analog进行...

831
来自专栏大大的微笑

ZOOKEEPER集群搭建及测试

①. zk是由java编写的需要java运行环境,所以大家首先要安装JDK 具体安装步骤,不再赘述      ②. 首先进入zk的conf目录,将zoo_sam...

29010
来自专栏JetpropelledSnake

ELK学习笔记之Logstash和Filebeat解析对java异常堆栈下多行日志配置支持

logstash官方最新文档。 假设有几十台服务器,每台服务器要监控系统日志syslog、tomcat日志、nginx日志、mysql日志等等,监控OOM、内存...

2641
来自专栏运维

RH413-RHEL6.4课程总结

RH413-RHEL6.4课程总结 Unit1 Tracking Security Updates 更新分以下三类 RHSA RHBA RHEA yum up...

1081
来自专栏Java职业技术分享

缓存架构之史上讲的最明白的RabbitMQ可靠消息传输实战演练

比如:某个广告主(如:天猫)想在我们的平台(如:今日头条)投放广告,当通过我们的广告系统新建广告的时候,该消息在同步给redis缓存(es)的时候丢失了,而我们...

1822
来自专栏葡萄城控件技术团队

Web API 持续集成:PostMan+Newman+Jenkins(图文讲解)

上篇文章我们已经完成了API测试工具选型,接下来是一系列周期性的开发测试过程:接口开发、检出代码、运行测试、记录结果、发送报告。为了快速发现问题,并减少重复过程...

1342
来自专栏坚毅的PHP

hbase问题总结

 1 java.io.IOException: java.io.IOException: java.lang.IllegalArgumentException:...

5376
来自专栏猿天地

Spring Cloud中Feign如何统一设置验证token

原理是通过每个微服务请求之前都从认证服务获取认证之后的token,然后将token放入到请求头中带过去,这样被调用方通过验证token来判断是否合法请求。

2611
来自专栏蓝天

Kafka常用命令收录

本文内容主要来自两个方面:一是网上的分享,二是自研的随手记。日记月累,收录kafka各种命令,会持续更新。

4663

扫码关注云+社区