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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值