Mybatis分页插件PageHelper的简单实现

  1. 对于使用Mybatis时候有事很烦的就是分页了,要limit还要count算出总页数啥的,因此就有了我们今天的PageHelper插件可以非常便捷的实现分页。
  2. 我们之前已经搭建了一个简单的springboot+mybatis+mysql的框架,那就在这个基础上做个分页,老规则首先引入依赖:
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
    	<version>1.2.5</version>
     </dependency>
    

3、其次配置yml文件

######### 分页插件 ##########

pagehelper:
    helperDialect: mysql                           #分页插件方言选择
    reasonable: true                               #合理化参数,设为true时pageNum<=0 时会查第一页, pageNum>pages(超过总数时),会查询最后一页
    supportMethodsArguments: true

4.编写maper,maper.xml,service

@Repository
public interface UserMapper {

    User selectById(Integer id);

    List<User> findByPage(User user);
}

@Service
public class UserService implements UserMapper {

    @Autowired
    private UserMapper userMapper;
    @Override
    public User selectById(Integer id) {
        return userMapper.selectById(id);
    }

    @Override
    public List<User> findByPage(User user) {
        List<User> list=userMapper.findByPage(user);
        return list;
    }
}

 <select id="findByPage" parameterType="com.cxw.entity.User" resultType="com.cxw.entity.User">
        select * from user
        <where>
            <if test="id != null ">
                id=#{id}
            </if>
        </where>
    </select>

5.关键地方编写我们的逻辑

@RequestMapping(method = RequestMethod.GET,value = "/user/list")
    public PageBean getUser(){
        int pageNo=2;
        int pageSize=5;
        Page page= PageHelper.startPage(pageNo,pageSize);
        List<User> list=userService.findByPage(new User());
        PageBean<User> userPageBean=new PageBean(pageNo,pageSize,(int)page.getTotal());
        userPageBean.setData(list);
        return userPageBean;
    }

我们可以看出关键代码就是 Page page= PageHelper.startPage(pageNo,pageSize);其他是不变的。PageBean是我个人的一个简单实体类

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> data;

    public PageBean() {
        super();
    }

    public PageBean(Integer currentPage, Integer pageSize, Integer totalNum) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.totalNum = totalNum;
        this.totalPage = (this.totalNum+this.pageSize-1)/this.pageSize;;
        this.isMore = this.currentPage >= this.totalPage?0:1;
        this.startIndex =  (this.currentPage-1)*this.pageSize;;
    }

    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> getData() {
        return data;
    }

    public void setData(List<T> data) {
        this.data = data;
    }
}

然后访问接口,就这样一个简单的分页就完成了。
在这里插入图片描述
代码路径:https://gitee.com/wangzaiwork/springboot-ssm.git
----------------------------写的不好仅供参考---------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值