先上一下最终的效果:
通过传入页数page 和 分页大小size后 只需要传递特定的分页对象(Pageable)给Mapper后 无需任何操作即可实现分页
效果,类似于spring data jpa 以及 mybatis-plus的分页功能。
一.文件结构以及配置
build.gradle:
buildscript {
ext {
springBootVersion = '1.5.9.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
group = 'org.zhu'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1')
compile('org.springframework.boot:spring-boot-starter-web')
runtime('mysql:mysql-connector-java')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
文件结构:
mybatis配置:
application.properties:
# ===============================
# = DATA SOURCE
# ===============================
spring.datasource.url = jdbc:mysql://localhost:3306/test?createDatabaseIfNotExist=true&characterEncoding\=utf-8
spring.datasource.userName = root
spring.datasource.password =
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
# ===============================
# = mybatis
# ===============================
mybatis.mapper-locations = classpath*:mapper/*.xml
mybatis.check-config-location=true
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.type-aliases-package = org.zhu.mybatis_test.bean
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>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!--设置拦截器-->
<plugins>
<plugin interceptor="org.zhu.mybatis_test.PageInterceptor">
<property name="dialect" value="mysql" />
</plugin>
</plugins>
</configuration>
二.实现
1.总体思路
spring Data Jpa 的分页很便捷
每次查询的时候只需要传递Pageable对象,即可返回分页的信息:
"content":{},"last": false,"totalPages": 2,"totalElements": 21,"size": 20,"number": 0,