springboot+Mybatis的分页插件pageHelper

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

猜你喜欢

转载自blog.csdn.net/qq_43419029/article/details/84324427