使用了Mybatis-plus的分页插件----IPage:
IPage 需要在dao层传入IPage的实现类Page对象,该对象实现了IPage
IPage内部原理是基于拦截器,拦截的是方法以及方法中的参数,会判断是否是查询操作。如果是查询操作,才会进入分页的逻辑处理。
进入分页的逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在IPage对象的实现类。如果不存在就不进行分页,存在则将该参数赋值给IPage对象。
然后进行拼接sql处理完成分页操作。
但是使用IPage需要注入一个Bean拦截器交给spring进行管理,否则不会进行拦截。
(注:MP另一个分页插件是PageHelper,不在此详细解释)
service:
IPage<ESlideshow> getAll(IPage<Object> page);
serviceImpl:
@Override
public IPage<ESlideshow> getAll(IPage<Object> page) {
IPage<ESlideshow> eSlideshowIPage= eSlideshowMapper.getAllPage(page);
return eSlideshowIPage;
}
mapper:
@Select("SELECT * FROM e_slideshow WHERE is_deleted =0")
IPage<ESlideshow> getAllPage(IPage<Object> page);
controller: