MySQL 之mybatis分页使用多个Page
有时候,对于一个页面进行查询,可能会查询多个不同的sql,此时用一个Page已经不合适了,所以需要使用多个Page进行。
下面用2个Page举例记录。
服务层实现方法:
public Page findInfoByPage(int pageNo, int pageSize, ParamVo paramVo) {
List<InfoVo> resList = new ArrayList<>();
Page stuPage = new Page();
stuPage.setPageNo(pageNo);
stuPage.setPageSize(pageSize);
StudentExample stuExample = new StudentExample();
List<Student> students = studentDao.selectByPage(stuExample, stuPage);
// 把 students 数据插入到返回的List中
// resList.addAll(students);
Page tchPage = new Page();
tchPage.setPageNo(pageNo);
tchPage.setPageSize(pageSize - resList.size());
TeacherExample tchExample = new TeacherExample();
List<Teacher> teachers = TeacherDao.selectByPage(tchExample, tchPage);
// 把 teachers 数据插入到返回的List中
// resList.addAll(teachers );
Page resPage = new Page();
int stuTotalRecord = stuPage.getTotalRecord();
int tchTotalRecord = tchPage.getTotalRecord();
int totalRecord = stuTotalRecord + tchTotalRecord;
resPage.setPageNo(pageNo);
resPage.setPageSize(pageSize);
resPage.setTotalRecord(totalRecord);
resPage.setTotalPage(totalRecord / pageSize);
resPage.setRecords(resList);
return resPage;
}
Page类:
import java.io.Serializable;
import java.util.List;
public class Page implements Serializable {
private static final long serialVersionUID = 1L;
private static int DEFAULT_COUNT = 20;
private int pageSize;
private int pageNo;
private int totalPage;
private int totalRecord;
private List records;
public Page() {
this.pageSize = DEFAULT_COUNT;
this.pageNo = 1;
this.totalPage = 1;
}
public Page(int pageSize) {
this();
this.setPageSize(pageSize);
}
public Page(int pageSize, int recordNumber) {
this.pageSize = DEFAULT_COUNT;
this.pageNo = 1;
this.totalPage = 1;
this.setPageNo(pageSize);
this.setTotal(recordNumber);
}
public Page(int pageSize, int pageNo, int recordNumber) {
this.pageSize = DEFAULT_COUNT;
this.pageNo = 1;
this.totalPage = 1;
this.setPageSize(pageSize);
this.setPageNo(pageNo);
this.setTotal(recordNumber);
}
public Page(int pageSize, int recordNumber, List records) {
this(pageSize, recordNumber);
this.records = records;
}
public void setPageSize(int pageSize) {
if (pageSize > 0) {
this.pageSize = pageSize;
}
}
public void setPageNo(int pageNo) {
if (pageNo < 1) {
this.pageNo = 1;
}
this.pageNo = pageNo;
}
public void setTotal(int totalRecord) {
if (totalRecord > 0) {
int t = totalRecord / this.pageSize;
int var10001;
if (totalRecord % this.pageSize != 0) {
++t;
var10001 = t;
} else {
var10001 = t;
}
this.totalPage = var10001;
this.totalRecord = totalRecord;
}
}
public int getCurrent() {
return this.pageNo > this.totalPage ? this.totalPage : this.pageNo;
}
public int getTotalPage() {
return this.totalPage;
}
public int getTotalRecord() {
return this.totalRecord;
}
public int getPageSize() {
return this.pageSize;
}
public int getPrePage() {
return this.pageNo > 2 ? this.pageNo - 1 : 1;
}
public int getNextPage() {
return this.pageNo < this.totalPage ? this.pageNo + 1 : this.totalPage;
}
public int getStartIndex() {
return (this.pageNo - 1) * this.pageSize + 1;
}
public void setRecords(List obj) {
this.records = obj;
}
public List getRecords() {
return this.records;
}
public int getPageNo() {
return this.pageNo;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public void setTotalRecord(int totalRecord) {
if (totalRecord > 0) {
int t = totalRecord / this.pageSize;
int var10001;
if (totalRecord % this.pageSize != 0) {
++t;
var10001 = t;
} else {
var10001 = t;
}
this.totalPage = var10001;
this.totalRecord = totalRecord;
}
}
}
若有不正之处,请谅解和批评指正,谢谢~
转载请标明:
https://blog.csdn.net/vihem/article/details/128305029