使用MyBatis分页插件实现分页
导入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
使用
@Override
public PageInfo<BcStaff> findPage(PageQuery pageQuery) {
// 使用mybatis分页插件,一点要在查询之前使用
PageHelper.startPage(pageQuery.getPage(),pageQuery.getRows());
List<BcStaff> bcStaffList = this.bcStaffMapper.selectByExample(null);
// 封装PageInfo对象,返回集合
PageInfo<BcStaff> pageInfo = new PageInfo<>(bcStaffList);
return pageInfo;
}
PageHelper中的startPage方法
service层
@Override
public PageInfo<BcStaff> findPage(PageQuery pageQuery) {
// 使用mybatis分页插件,一点要在查询之前使用
PageHelper.startPage(pageQuery.getPage(),pageQuery.getRows()); // 页数,每页记录数
// 调用dao层方法
List<BcStaff> bcStaffList = this.bcStaffMapper.selectByExample(null);
// 非洲PageInfo对象,返回bcStaffList
PageInfo<BcStaff> pageInfo = new PageInfo<>(bcStaffList);
return pageInfo;
}
PageInfo代码
public class PageInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
private int pageNum;
private int pageSize;
private int size;
private int startRow;
private int endRow;
private long total;
private int pages;
private List<T> list;
private int firstPage;
private int prePage;
private int nextPage;
private int lastPage;
private boolean isFirstPage;
private boolean isLastPage;
private boolean hasPreviousPage;
private boolean hasNextPage;
private int navigatePages;
private int[] navigatepageNums;
public PageInfo() {
this.isFirstPage = false;
this.isLastPage = false;
this.hasPreviousPage = false;
this.hasNextPage = false;
}
public PageInfo(List<T> list) {
this(list, 8);
}
public PageInfo(List<T> list, int navigatePages) {
this.isFirstPage = false;
this.isLastPage = false;
this.hasPreviousPage = false;
this.hasNextPage = false;
if (list instanceof Page) {
Page page = (Page)list;
this.pageNum = page.getPageNum();
this.pageSize = page.getPageSize();
this.total = page.getTotal();
this.pages = page.getPages();
this.list = page;
this.size = page.size();
if (this.size == 0) {
this.startRow = 0;
this.endRow = 0;
} else {
this.startRow = page.getStartRow() + 1;
this.endRow = this.startRow - 1 + this.size;
}
this.navigatePages = navigatePages;
this.calcNavigatepageNums();
this.calcPage();
this.judgePageBoudary();
}
}
private void calcNavigatepageNums() {
int i;
if (this.pages <= this.navigatePages) {
this.navigatepageNums = new int[this.pages];
for(i = 0; i < this.pages; ++i) {
this.navigatepageNums[i] = i + 1;
}
} else {
this.navigatepageNums = new int[this.navigatePages];
i = this.pageNum - this.navigatePages / 2;
int endNum = this.pageNum + this.navigatePages / 2;
int i;
if (i < 1) {
i = 1;
for(i = 0; i < this.navigatePages; ++i) {
this.navigatepageNums[i] = i++;
}
} else if (endNum > this.pages) {
endNum = this.pages;
for(i = this.navigatePages - 1; i >= 0; --i) {
this.navigatepageNums[i] = endNum--;
}
} else {
for(i = 0; i < this.navigatePages; ++i) {
this.navigatepageNums[i] = i++;
}
}
}
}
private void calcPage() {
if (this.navigatepageNums != null && this.navigatepageNums.length > 0) {
this.firstPage = this.navigatepageNums[0];
this.lastPage = this.navigatepageNums[this.navigatepageNums.length - 1];
if (this.pageNum > 1) {
this.prePage = this.pageNum - 1;
}
if (this.pageNum < this.pages) {
this.nextPage = this.pageNum + 1;
}
}
}
private void judgePageBoudary() {
this.isFirstPage = this.pageNum == 1;
this.isLastPage = this.pageNum == this.pages;
this.hasPreviousPage = this.pageNum > 1;
this.hasNextPage = this.pageNum < this.pages;
}
所有分页的方法,pageInfo已经写好了
jsp页面
// 取派员信息表格
$('#grid').datagrid({
iconCls : 'icon-forward',
fit : true,
border : false,
rownumbers : true,
striped : true,
pageList: [10,20,50],
pagination : true,
toolbar : toolbar,
url : "${pageContext.request.contextPath }/bcStaff/findPage.action",
idField : 'id',
columns : columns,
//singleSelect: true,
onDblClickRow : doDblClickRow
});
controller层
// 列表显示
@RequestMapping(value = "findPage.action")
@ResponseBody
public Map<String,Object> findPage(PageQuery pageQuery){
PageInfo<BcStaff> page = this.bcStaffService.findPage(pageQuery);
HashMap<String, Object> map = new HashMap<>();
map.put("total",page.getTotal());
map.put("rows",page.getList());
return map;
}
效果图: