1.引入
引入mybatis-spring-boot-starter后
如果是springboot-web项目引入
<dependency>
<groupId>com.github.maojx0630</groupId>
<artifactId>paging-spring-boot-starter</artifactId>
<version>1.5</version>
</dependency>
2.使用
- 使用PageUtils
PageUtils.start(1); PageUtils.start(1,10); PageUtils.start(1,10,true);
以上三种都可以 第一种仅指定页码,第二种指定页码和页长,第三种额外指定是否获取总页
默认 页长为10 默认获取总页(使用该方法应接下来立刻执行sql,若不执行sql可能会导致内存泄漏或sql异常,若自定义了缓存等方法导致可能不执行sql,可以自己使用PageUtils.clear();去清除) - 使用实现PageAbelQuick接口的类
将一个类实现PageAbelQuick接口后作为参数传入mapper方法即可开启分页,也可以使用PageAbel该类已经实现该接口public class UserInfo implements PageAbelQuick { private Long id; private String name; private int pageNo; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } }
pageSize默认为10 获取总数默认为true,也可根据自己需求覆盖,然后作为mapper方法参数传入即可,如下
@Mapper public interface UserDao { List<String> getUser(UserInfo userInfo); }
- 使用EnablePage注解
将EnablePage注解添加在需要分页的mapper方法上/** * 从request中获取size的name * @return request中分页长度参数名 */ String pageSize() default "pageSize"; /** * 从request中获取no的name * @return request中第几页的参数名字 */ String pageNo() default "pageNo"; /** * 是否获取总数 * @return 是否需要获取总数 默认为true获取 */ boolean isEnablePageCount() default true; /** * 手动设置size优先级高于request获取 * @return 手动设置的分页长度会覆盖参数中的 */ int pageSizeInt() default 0;
该注解会从request参数中读取 页长与页码,若手动设置页长后会覆盖参数中的页长,也可修改pageSize和PageNo属性来修改从request读取的参数名(该注解在noweb版本中不可使用)
3.获取总页数等信息
将dao获得的list传入PageUtils的get方法即可
Page<UserInfo> page=PageUtils.get(dao.getList());
4.扩展
插件只支持mysql,若需要支持其他数据库可以自己扩展,实现SqlCountAndPaging接口后根据数据库实际情况自行覆盖sql