您的位置:首页 > 编程语言 > Java开发

springboot+Mybatis的分页插件pageHelper

2018-11-21 15:49 465 查看

1、在pom.xml加入pageHelper依赖包

<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>

ps:jar包可以在maven仓库中下载,地址如下

https://mvnrepository.com/

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的简单应用啦!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: