还记得上一次写的分页吗?
在MyBatis中实现分页的方法是这样的:
1.自定义一个拦截器
2.在拦截器中,根据不同的数据库返回不同的分页SQL语句
3.在配置文件中配置该拦截器插件
大概就是这么个顺序,在上一次实现时,使用了RowBounds,功能可能不是很强大,后来又在网上找到了一个实现方法,现分享一下:
1.pom.xml
这个和上一次是一样的
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.ygy.demo</groupId>
<artifactId>mybatis-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>mybatis-parent</name>
<url>http://maven.apache.org</url>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.12.0</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<modules>
<module>mybatis-hello</module>
<module>mybatis-relevance</module>
<module>mybatis-common</module>
<module>mybatis-page</module>
<module>mybatis-batch</module>
</modules>
</project>
2.分页实体的实现
这个自定义了一个分页实体,实现了更多的功能
package org.ygy.demo.mybatis.interceptor;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Data;
/**
* 对分页的基本数据进行一个简单的封装
*/
@Data
public class Page<T> {
private int start = 1;// 页码,默认是第一页
private int pageSize = 15;// 每页显示的记录数,默认是15
private int totalRecord;// 总记录数
private int totalPage;// 总页数
private List<T> results;// 对应的当前页记录
private Map<String, Object> params = new HashMap<String, Object>();// 其他的参数我们把它分装成一个Map对象
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
// 在设置总条数的时候计算出对应的总页数,在下面的三目运算中加法拥有更高的优先级,所以最后可以不加括号。
int totalPage = totalRecord % pageSize == 0 ? totalRecord / pageSize : totalRecord / pageSize + 1;
this.setTotalPage(totalPage);
}
}
3.拦截器的实现
这个拦截器的实现,原作者写了很多的注释,很有用,感谢分享(ps:很抱歉,忘记在哪里找的了)