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对象时,对于使用者类似于透明。导致有点“不明觉厉”。