Mybatis自定義數據庫分頁查詢

首先定義一個工具類用於接受一個分頁查詢結果:

//分頁查詢工具類
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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章