1、在pom.xml加入pageHelper依赖包
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
ps:jar包可以在maven仓库中下载,地址如下
2、创建一个名为pageBean的实体类
package com.zt.entity;
import java.util.List;
public class PageBean<T> {
// 当前页
private Integer currentPage = 1;
// 每页显示的总条数
private Integer pageSize = 10;
// 总条数
private Integer totalNum;
// 是否有下一页
private Integer isMore;
// 总页数
private Integer totalPage;
// 开始索引
private Integer startIndex;
// 分页结果
private List<T> items;
public PageBean() {
super();
}
public PageBean(Integer currentPage, Integer pageSize, Integer totalNum) {
super();
this.currentPage = currentPage;
this.pageSize = pageSize;
this.totalNum = totalNum;
this.totalPage = (this.totalNum+this.pageSize-1)/this.pageSize;
this.startIndex = (this.currentPage-1)*this.pageSize;
this.isMore = this.currentPage >= this.totalPage?0:1;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalNum() {
return totalNum;
}
public void setTotalNum(Integer totalNum) {
this.totalNum = totalNum;
}
public Integer getIsMore() {
return isMore;
}
public void setIsMore(Integer isMore) {
this.isMore = isMore;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public Integer getStartIndex() {
return startIndex;
}
public void setStartIndex(Integer startIndex) {
this.startIndex = startIndex;
}
public List<T> getItems() {
return items;
}
public void setItems(List<T> items) {
this.items = items;
}
}
3、创建一个名为AbstractPageForm的类,用来设置分页相关的参数
package com.zt.paging;
import com.github.pagehelper.PageHelper;
import java.io.Serializable;
public class AbstractPageForm<T extends AbstractPageForm<T>> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* @Description 页码为首页
*/
protected int pageNum = 1;
/**
* @Description 每页显示数量,默认为10
*/
protected int pageSize = 10;
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/**
* @Title enablePaging
* @Description 启用分页
* @return
*/
@SuppressWarnings("unchecked")
public final T enablePaging() {
PageHelper.startPage(pageNum, pageSize);
return (T) this;
}
}
4、构造分页方法
public PageBean findAllUserWithPages(int currentPage,int pageSize){
//设置分页信息,分别是当前页数和每页显示的总记录数【记住:必须在mapper接口中的方法执行之前设置该分页信息】
PageHelper.startPage(currentPage,pageSize);
//全部用户信息
List<User> all = iUserMapper.findAll();
//全部条数
int allCount = iUserMapper.findAllCount();
PageBean<User> pageData=new PageBean<User>(currentPage,pageSize,allCount);
pageData.setItems(all);
return pageData;
}
mapper.xml文件
<select id="findAll" resultMap="BaseResultMap">
select <include refid="a"/> from user
</select>
<select id="findAllCount" resultType="integer">
select count(1) from user
</select>
<sql id="a">
id,email,email_code,email_verify,gender,google_key,google_secret,google_verify,has_stop,
mobile_phone,name,password,pay_password,user_name,miner_info_id,parent_id,role_id
</sql>
注意:findAllCount方法需要加上结果类型,不然会出现如下异常:
5、在controller中实现分页功能
package com.zt.controller;
import com.zt.entity.PageBean;
import com.zt.entity.User;
import com.zt.service.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserServiceImpl userService;
@RequestMapping("/findAll")
public PageBean findAll(Integer currentPage,Integer pageSize){
if(Objects.nonNull(currentPage)&Objects.nonNull(pageSize)){
if(currentPage>0&pageSize>0){
return userService.findAllUserWithPages(currentPage,pageSize);
}
return userService.findAllUserWithPages(1,324);
}
return userService.findAllUserWithPages(1,324);
}
}
/*传入的参数最好使用Integer包装类,以便我们进行逻辑判断*/
6、测试结果
这就是Mybatis分页插件PageHelper的简单应用啦!