大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
前言
关于分页,一般来说rowBounds 这种假分页都上不了台面,我们往往都选哟真分页,那么还不想搞得很麻烦,Mybatis的分页插件就为后端程序员解决了这个问题
例子
首先需要导入依赖, 没错pagehelper
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
看看怎么用,首先我们不要条件,直接分
当然了我喜欢自己事先写一个page的实体类?
public class page<T> {
private int pageNumber;
private int pageSize;
private int total;
private List<T> rows;
private int pageCount;
private int pre;
private int next;
private int start; //limit ?,?
private boolean first;
private boolean last;
public int getPageCount() {
return (getTotal()+getPageSize()-1)/getPageSize();
}
public int getPre() {
if(getPageNumber()==1)
return 1;
return getPageNumber()-1;
}
public int getNext() {
if(getPageNumber()==getPageCount())
return getPageCount();
return getPageNumber()+1;
}
public int getStart() {
return (getPageNumber()-1)*pageSize;
}
public boolean isFirst() {
return getPageNumber()==1;
}
public boolean isLast() {
return getPageNumber()==getPageCount();
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
}
Controller?
@RequestMapping(value = "/querySome", method = RequestMethod.POST)
@ResponseBody
public ETResponse querySome(int pageNumber, int pageSize) {
List<Food> rows = service.querySome(pageNumber, pageSize);
PageInfo<Food> info = new PageInfo<>(rows);//Pageinfo 是个Mybatis写的page
page<Food> pa = new page<>();
pa.setRows(info.getList());
pa.setTotal(Integer.parseInt(info.getTotal() + ""));
pa.setPageSize(pageSize);
pa.setPageNumber(pageNumber);
return sr.setResponse(pa,"200");
}
流程就是
当然了,有没有简化版?这我还得自己建个类,有
Controller
@RequestMapping(value = "/querySome", method = RequestMethod.POST)
@ResponseBody
public ETResponse querySome(int pageNumber, int pageSize) {
List<Food> rows = service.querySome(pageNumber, pageSize);
PageInfo<Food> info = new PageInfo<>(rows);//Pageinfo 是个Mybatis写的page
return sr.setResponse(info,"200");//负责向前台发送response.data.data的方法
}
是的没错,直接把pageinfo的对象传给前台也不是不行,因为它本身就是一个page对象,只是它里面的一些属性我们不是很清楚,
下面是pageInfo源码中的属性
private int pageNum;
private int pageSize;
private int size;
private long startRow;
private long endRow;
private int pages;
private int prePage;
private int nextPage;
private boolean isFirstPage;
private boolean isLastPage;
private boolean hasPreviousPage;
private boolean hasNextPage;
private int navigatePages;
private int[] navigatepageNums;
private int navigateFirstPage;
private int navigateLastPage;
我们发现好像没有我们的要的list结果集
我找了找在它父类中呢
很明显了吧,所以以后需要什么属性直接get也好
ok说了这么多,看看Service
public List<Food> querySome(int pageNumber, int pageSize) {
PageHelper.startPage(pageNumber,pageSize);//负责分页
return dao.querySome();//传空参给dao层
}
Dao层+mapper.xml文件
List<Food> querySome();
<select id="querySome" resultType="food">
select * from food
</select>
那有条件查询的分页呢?
很简单我们只需要在Service中把条件给dao层就ok了
public List<Food> querySome(String name,int pageNumber, int pageSize) {
PageHelper.startPage(pageNumber,pageSize);//负责分页
return dao.querySome(name);//传空参给dao层
}
List<Food> querySome(String name);
<select id="querySome" resultType="food">
select * from food where name =#{
name}
</select>
总结
ok了MyBatis的分页插件学会了的话,记得给个赞哦~
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184313.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...