mysql 分页查询拦截器_GitHub - hengboy/mybatis-pageable: MyBatis-Pageable是一款自动化分页的插件,基于MyBatis内部的插件Intercept...

欢迎使用自动化分页插件

68747470733a2f2f6d6176656e2d6261646765732e6865726f6b756170702e636f6d2f6d6176656e2d63656e7472616c2f636f6d2e67697465652e68656e67626f792f737072696e672d626f6f742d737461727465722d6d7962617469732d7061676561626c652f62616467652e737667

欢迎关注公众号

687474703a2f2f7265736f757263652e68656e67626f792e636f6d2f696d6167652f7172636f64652e6a7067

关注微信公众号,回复加群,获取交流群群号。

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配置文件内:

com.gitee.hengboy

spring-boot-starter-mybatis-pageable

{lastVersion}

如果你使用的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,那么你需要添加如下代码到你的配置文件:

使用application.xml 配置插件

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

dialect=mysql

怎么使用?

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

Page page = PageableRequest.of(1, 5).request(() -> userMapper.selectAll());

of 配置分页的当前页码以及每页的限制条数

request 该方法需要传递一个业务逻辑方法,也就是你需要执行分页的方法

Page对象详解

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

data 分页后的数据列表,具体的返回值可以使用Page泛型接收

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 page = pageable.request(()->userMapper.selectAll());

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值