springboot+mybatis分页

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

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

2.application.yml 配置文件中添加分页插件有关的配置

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

3.dao层

package com.zgjy.dao;

import com.zgjy.entity.SysUser;
import com.zgjy.entity.OrderInfo;
import com.zgjy.entity.orderInfoExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface OrderInfoMapper {
    int countByExample(orderInfoExample example);

    int deleteByExample(orderInfoExample example);

    int insert(OrderInfo record);

    int insertSelective(OrderInfo record);

    List<OrderInfo> selectByExample(orderInfoExample example);

    int updateByExampleSelective(@Param("record") OrderInfo record, @Param("example") orderInfoExample example);

    int updateByExample(@Param("record") OrderInfo record, @Param("example") orderInfoExample example);

    /**
     * 查询全部订单
     * @return
     */
    List<OrderInfo> selectAll();

    /**
     * 分页查询订单
     * @return
     */
    List<OrderInfo> selectPage();
}

4.sql

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

5.service

package com.zgjy.service;

import com.zgjy.entity.OrderInfo;
import com.zgjy.util.PageRequest;
import com.zgjy.util.PageResult;

import java.util.List;

public interface OrderInfoService {

    /**
     * 查找所有用户
     * @return
     */
    List<OrderInfo> findAll();

    /**
     * 分页查询接口
     * 这里统一封装了分页请求和结果,避免直接引入具体框架的分页对象, 如MyBatis或JPA的分页对象
     * 从而避免因为替换ORM框架而导致服务层、控制层的分页接口也需要变动的情况,替换ORM框架也不会
     * 影响服务层以上的分页接口,起到了解耦的作用
     * @param pageRequest 自定义,统一分页查询请求
     * @return PageResult 自定义,统一分页查询结果
     */
    PageResult findPage(PageRequest pageRequest);
}

5.impl

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);
    }
}

6.controller

package com.zgjy.controller;

import com.zgjy.service.OrderInfoService;
import com.zgjy.util.PageRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("order")
public class OrderInfoController {
    @Autowired
    private OrderInfoService orderInfoService;

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

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

7.分页请求

package com.zgjy.util;

import lombok.Getter;
import lombok.Setter;

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

8.分页数据封装

package com.zgjy.util;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Setter
@Getter
public class PageResult {
    /**
     * 当前页码
     */
    private int pageNum;
    /**
     * 每页数量
     */
    private int pageSize;
    /**
     * 记录总数
     */
    private long totalSize;
    /**
     * 页码总数
     */
    private int totalPages;

    /**
     * 数据模型
     */
    private List<?> content;


}

9.工具类

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

老猿学JAVA

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值