关于MyBatis-Plus中分页【IPage】

1.使用MyBatis-Plus自带的分页对象 【Page对象】(最简单)


     

  • 1. 自带的Page对象实现了IPage接口 
  • 2. MyService继承IService【本身内部有已经写好的方法】类  

 直接使用Service中继承过来的IService中的page方法(Page对象,查询条件),就可以完成分页。

2.使用自定义的Page对象

创建自己的Page对象

【*】注意:这个对象一定要使用泛型。(否则后面Mapper接口中的抽象方法返回值会类型不兼容)

 

 

public class MyPage<T> implements IPage<T> {

    /**
     * 查询数据列表
     */
    protected List<T> records = Collections.emptyList();

     /**
     * 总数
     */
     protected long total;
    /**
     * 每页显示条数,默认 10
     */
     protected long size;
    /**
     * 当前页
     */
     protected long current = 1;

    /**
     * 排序条件,一般不直接使用这个排序
     */
    List<OrderItem> orders;

    /**
     * 分页构造
     * @param current
     * @param size
     */
    public MyPage(long current, long size) {
        this(current, size, 0);
    }

    /**
     * 分页构造
     * @param total
     * @param size
     * @param current
     */
    public MyPage(long current, long size, long total) {
        this.total = total;
        this.size = size;
        this.current = current;

        //这里可以使用order排序,类似于默认排序 【一般不这样使用】
        /*List<OrderItem> list = new ArrayList<>();
        list.add(new OrderItem("sys_create_time",false));
        this.orders = list;*/
    }

    /**
     *返回排序条件列表
     * @return
     */
    @Override
    public List<OrderItem> orders() {
        return orders;
    }

    /**
     * 返回记录列表
     * @return
     */
    @Override
    public List<T> getRecords() {

        return records;
    }

    /**
     * 设置记录列表
     * @param records
     * @return
     */
    @Override
    public IPage<T> setRecords(List<T> records) {
        this.records = records;
        return this;
    }

    /**
     * 获取查询总数
     * @return
     */
    @Override
    public long getTotal() {
        return this.total;
    }

    /**
     * 设置查询总数
     * @param total
     * @return
     */
    @Override
    public IPage<T> setTotal(long total) {
        this.total = total;
        return this;
    }

    /**
     * 当前分页列表条数
     * @return
     */
    @Override
    public long getSize() {
        return this.size;
    }
    /**
     * 设置分页列表条数
     * @return
     */
    @Override
    public IPage<T> setSize(long size) {
        this.size = size;
        return this;
    }

    /**
     * 获取当前页码
     * @return
     */
    @Override
    public long getCurrent() {
        return this.current;
    }
    /**
     * 设置当前页码
     * @return
     */
    @Override
    public IPage<T> setCurrent(long current) {
        this.current = current;
        return this;
    }

}

查询:       

 Mapper:

    <select id="iPage" resultType="com.zj.bj.ai.mytest.entity.Department">
        select id from department 
        ${ew.customsqlsegment} /*使用这条语句,会条件查询完毕,填充到Page对象中*/
    </select>

 总结:

        Mybatis-Plus做了很多方便使用的封装,ew.customsqlsegment就是一个方便使用的语法糖。查询后的结果填充Page对象时,对于使用者类似于透明。导致有点“不明觉厉”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值