首先定義一個工具類用於接受一個分頁查詢結果:
//分頁查詢工具類
public class PageBean<T> {
private int currPage;//當前頁數
private int pageSize;//每頁的數據條數
private int totalCount;//總記錄數
private int totalPage;//總頁數
private List<T> lists;//每頁的顯示的數據
public PageBean() {
super();
}
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<T> getLists() {
return lists;
}
public void setLists(List<T> lists) {
this.lists = lists;
}
@Override
public String toString() {
return "PageBean{" +
"currPage=" + currPage +
", pageSize=" + pageSize +
", totalCount=" + totalCount +
", totalPage=" + totalPage +
", lists=" + lists +
'}';
}
}
業務邏輯:
//分頁查找所有用戶
public PageBean<User> findAllUser(int currPage){
HashMap<String, Object> map = new HashMap<>();//哈希集合存儲不重複的數據
PageBean<User> pageBean = new PageBean<>();
//每頁顯示的數據
int pageSize = 10;
pageBean.setPageSize(pageSize);
//封裝總記錄數,獲取用戶總數
int totalCount = userDao.getUserNumber();
pageBean.setTotalCount(totalCount);
//如果沒有數據,直接返回
if(totalCount==0){
return pageBean;
}
//封裝總頁數
double tc = totalCount;
Double num = Math.ceil(tc / pageSize);//向上取整
pageBean.setTotalPage(num.intValue());
//傳入的當前頁小於1時則等於1,大於總頁數則等於總頁數也就是最後一頁
if(currPage<1) currPage=1;
else if(currPage>pageBean.getTotalPage()) currPage = pageBean.getTotalPage();
//封裝當前頁數
pageBean.setCurrPage(currPage);
map.put("start", (currPage - 1) * pageSize);
map.put("size", pageBean.getPageSize());
//封裝每頁顯示的數據
List<User> lists = userDao.findAllUser(map);
for(User user:lists){
user.setPassword("");
}
pageBean.setLists(lists);
return pageBean;
}
Mybatis:
<!--分頁查找所有用戶-->
<select id="findAllUser" parameterType="Map" resultType="user">
select *
from users
limit #{start},#{size}
</select>
<!--獲取用戶的總數-->
<select id="getUserNumber" resultType="int">
select count(*)
from users
</select>