Springboot实现MyBatis分页

前言

springboot+MyBatis实现分页,这是比较基础也是比较经典的问题。最近在项目中又遇到了分页功能,趁热打铁,以书面的方式记录下来,一:可以理清思路,二:加深印象,三:方便以后查看

Demo示范

添加相关依赖

在pom中添加相关依赖

 
    com.github.pagehelper
    pagehelper-spring-boot-starter
    1.2.5

添加相关配置

在application.properties配置文件中添加分页插件相关的配置

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

分页查询请求封装类

/**
 * 分页请求
 */
@Data
public class PageRequest {

    /**
     * 当前页码
     */
    private int pageNum;
    /**
     * 每页数量
     */
    private int pageSize;
}

分页查询结果封装类

/**
 * 分页返回结果
 */
@Data
public class PageResult {
    /**
     * 当前页码
     */
    private int pageNum;
    /**
     * 每页数量
     */
    private int pageSize;
    /**
     * 记录总数
     */
    private long totalSize;
    /**
     * 页码总数
     */
    private int totalPages;
    /**
     * 数据模型
     */
    private List content;
}

分页查询相关工具类

/**
     * 将分页信息封装到统一的接口
     * @param pageRequest
     * @param pageInfo
     * @return
     */
    public static PageResult getPageRuselt(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;
    }

DAO层

 /**
     * 查询全部用户
     */
    List selectAll();

    /**
     * 分页查询用户
     */
    List selectPage();

Mapper

 

Service

 /**
     * 查询所有用户
     */
    List findAll();

    /**
     *
     * @param pageRequest 自定义,统一分页查询请求
     * @return PageRequest 自定义,统一分页查询结果
     */
    PageResult findPage(PageRequest pageRequest);

Impl

 @Override
    public List findAll() {
        return taskDaoMapper.selectAll();
    }

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

    private PageInfo getPageInfo(PageRequest pageRequest){
        int pageNum = pageRequest.getPageNum();
        int pageSize = pageRequest.getPageSize();
        PageHelper.startPage(pageNum, pageSize);
        List taskPOS = taskDaoMapper.selectPage();
        return new PageInfo(taskPOS);
    }

Controller

 @GetMapping(value = "/findAll")
    public Object findAll(){
        return taskService.findAll();
    }

    @PostMapping(value = "/findPage")
    public Object findPage(@RequestBody PageRequest pageRequest){
        return taskService.findPage(pageRequest);
    }

编译测试运行

参数:pageNum: 2, pageSize: 3

Springboot实现MyBatis分页_第1张图片

总结

今天的总结到这里就结束啦,每天记录一点点,生活美好一点点! 

你可能感兴趣的:(java基础)