首先定义一个工具类用于接受一个分页查询结果:
//分页查询工具类
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>