对于Mybatis,进行分页,网上有分页的插件,叫PageHelper,下载后,能够方便的实现分页。
1、下载jar包
如果是使用Maven工程,可直接引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.4</version>
</dependency>
或者直接去下载jar包
2、配置Mybatis的配置文件configuration.xml
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"/>
<property name="offsetAsPageNum" value="true"/>
<property name="rowBoundsWithCount" value="true"/>
</plugin>
</plugins>
值得注意的一点的是,mybatis的配置文件中,元素的顺序是有要求的,不然会报错,元素的顺序:
元素顺序:
properties
settings
typeAliases
typeHandlers
objectFactory
objectWrapperFactory
plugins
environments
databaseIdProvider
mappers
3、在执行sql查询语句前,加上下面这句话,即可进行分页限制。
public PageBean<VOrdercancel> SelectPage(int currentpage,int counts)
{
List<VOrdercancel> list=null;
try {
sqlSession=dbAccess.getSqlSession();
IVOrdercancel ivOrdercancel=sqlSession.getMapper(IVOrdercancel.class);
//加上这句,相当于select * from tbname limit currentpage,counts;
PageHelper.startPage(currentpage, counts);
list=ivOrdercancel.select_vordercancel();
sqlSession.commit();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
sqlSession.close();
}
return new PageBean<VOrdercancel>(list);
}
加上PageHelper.startPage(currentpage, counts);后的原理,其实就是在执行SQL语句的时候,对其进行拦截,对sql加上拼接了后面的limit 。
4、对查询后的数据进行封装。
package util;
import java.io.Serializable;
import java.util.List;
import com.github.pagehelper.Page;
public class PageBean<T> implements Serializable {
private long total; //总记录数
private List<T> list; //结果集
private int pageNum; // 第几页
private int pageSize; // 每页记录数
private int pages; // 总页数
private int size; // 当前页的数量 <= pageSize,该属性来自ArrayList的size属性
/**
* 包装Page对象,因为直接返回Page对象,在JSON处理以及其他情况下会被当成List来处理,
* 而出现一些问题。
* @param list page结果
* @param navigatePages 页码数量
*/
public PageBean(List<T> list) {
if (list instanceof Page) {
Page<T> page = (Page<T>) list;
this.pageNum = page.getPageNum();
this.pageSize = page.getPageSize();
this.total = page.getTotal();
this.pages = page.getPages();
this.list = page;
this.size = page.size();
}
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
完毕!
网友评论