springboot实现MyBatis分页


原文链接: https://www.jianshu.com/p/5f15474ac4c5

1.在 pom.xml 文件中添加分页插件依赖包

pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql

3.编写分页代码
1)DAO层添加selectPage方法

<select id="selectPage"  resultMap="BaseResultMap">
    select
    ="Base_Column_List" />
    from dwd_fact_order
  </select>

3)服务层通过调用DAO层代码完成分页查询,这里统一封装分页查询的请求和结果类,从而避免因为替换ORM框架而导致服务层、控制层的分页接口也需要变动的情况,替换ORM框架也不会影响服务层以上的分页接口,起到了解耦的作用。

package com.zgjy.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zgjy.dao.OrderInfoMapper;
import com.zgjy.entity.OrderInfo;
import com.zgjy.entity.SysUser;
import com.zgjy.service.OrderInfoService;
import com.zgjy.util.PageRequest;
import com.zgjy.util.PageResult;
import com.zgjy.util.PageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class OrderInfoServiceImpl implements OrderInfoService {
    @Autowired
    private OrderInfoMapper orderInfoMapper;


    @Override
    public List<OrderInfo> findAll() {
        return orderInfoMapper.selectAll();
    }

    @Override
    public PageResult findPage(PageRequest pageRequest) {
        return PageUtils.getPageResult(pageRequest,getPageInfo(pageRequest));
    }

    /**
     * 调用分页插件完成分页
     * @param pageRequest
     * @return
     */
    private PageInfo<?> getPageInfo(PageRequest pageRequest) {
        int pageNum = pageRequest.getPageNum();
        int pageSize = pageRequest.getPageSize();
        PageHelper.startPage(pageNum,pageSize);
        List<OrderInfo> sysMenus = orderInfoMapper.selectPage();
        return new PageInfo<>(sysMenus);
    }
}

5)在控制器SysUserController中添加分页查询方法,并调用服务层的分页查询方法。

package com.zgjy.util;

import lombok.Getter;
import lombok.Setter;

/**
 * 分页请求
 */
@Setter
@Getter
public class PageRequest {
    /**
     * 当前页码
     */
    private int pageNum;
    /**
     * 每页数量
     */
    private int pageSize;
}

分页查询结果封装类。
PageResult.java

package com.zgjy.util;

import com.github.pagehelper.PageInfo;

public class PageUtils {
    /**
     * 将分页信息封装到统一的接口
     * @param pageRequest
     * @param pageInfo
     * @return
     */
    public static PageResult getPageResult(PageRequest pageRequest, PageInfo<?> pageInfo){
        PageResult pageResult = new PageResult();
        pageResult.setPageNum(pageInfo.getPageNum());
        pageResult.setPageSize(pageInfo.getPageSize());
        pageResult.setTotalSize(pageInfo.getTotal());
        pageResult.setTotalPages(pageInfo.getPages());
        pageResult.setContent(pageInfo.getList());
        return pageResult;
    }
}

4.启动应用,访问:localhost:8088/swagger-ui.html,找到对应接口,模拟测试,结果如下。


   

参数:pageNum: 1, pageSize: 5

        0人点赞   日记本