springboot系列(六)——单体架构之Mybatis分页插件pagehelper

1.前言

在开发过程中,经常会遇到分页查询的需求,为了解决这一问题,今天我带大家了解一下Mybatis的一款分页插件pagehelper,个人感觉用起来是非常实用和简单的,有感兴趣的可以深入了解一下。

2.pagehelper分页插件

2.1 引入分页插件依赖

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

2.2 配置yml

# 分页插件配置
pagehelper:
  helperDialect: mysql
  supportMethodsArguments: true

2.3 自定义PagedGridResult类

在common子项目中创建PagedGridResult类,用于封装分页查询结果,响应给前端去处理。

import java.util.List;

/**
 * @Description: 用来返回分页Grid的数据格式
 */
public class PagedGridResult {

    private int page;			// 当前页数
    private int total;			// 总页数
    private long records;		// 总记录数
    private List<?> rows;		// 每行显示的内容

    public int getPage() {
        return page;
    }
    public void setPage(int page) {
        this.page = page;
    }
    public int getTotal() {
        return total;
    }
    public void setTotal(int total) {
        this.total = total;
    }
    public long getRecords() {
        return records;
    }
    public void setRecords(long records) {
        this.records = records;
    }
    public List<?> getRows() {
        return rows;
    }
    public void setRows(List<?> rows) {
        this.rows = rows;
    }
}

2.4 自定义PageUtil类

在common子项目中创建PageUtil工具类,用于将查询结果list快速封装成为PagedGridResult对象。

import java.util.List;

/**
 * 将分页查询后的结果处理成PagedGridResult对象,然后返回
 */
public class PageUtil {

    public static PagedGridResult setPagedGrid(List<?> list, Integer page){
        PageInfo<?> pageList = new PageInfo<>(list);
        PagedGridResult grid = new PagedGridResult();
        grid.setPage(page);
        grid.setRows(list);
        grid.setTotal(pageList.getPages());
        grid.setRecords(pageList.getTotal());

        return grid;
    }
}

3.举例与使用

3.1 service层代码

import com.github.pagehelper.PageHelper;
import com.htf.common.response.PagedGridResult;
import com.htf.common.utils.PageUtil;
import com.htf.mapper.CarouselMapper;
import com.htf.pojo.Carousel;
import com.htf.service.CarouselService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CarouselServiceImpl implements CarouselService {

    @Autowired
    private CarouselMapper carouselMapper;

    @Override
    public PagedGridResult getCarouselAll(Integer page, Integer pageSize) {

        PageHelper.startPage(page,pageSize);

        List<Carousel> carouselList= carouselMapper.selectAll();

        PagedGridResult pagedGridResult = PageUtil.setPagedGrid(carouselList, page);

        return pagedGridResult;
    }
}

3.2 controller层代码

@PostMapping("/list")
    @ApiOperation(value = "分页查询Carousel", notes = "分页查询Carousel的相关API", httpMethod = "POST")
    public PagedGridResult list(
            @RequestParam("page")
            @ApiParam(name = "page", value = "分页的当前页", required = true)
            Integer page,
            @RequestParam("pageSize")
            @ApiParam(name = "pageSize", value = "每页显示多少条数据", required = true)
            Integer pageSize){
        PagedGridResult result = carouselService.getCarouselAll(page, pageSize);

        return result;
    }

3.3 调用list接口,查看响应结果

启动你的程序,利用PostMan软件调试list接口,查看响应结果。

响应的json格式数据如下:

{
    "page": 1,
    "total": 2,
    "records": 4,
    "rows": [
        {
            "id": "c-10011",
            "imageUrl": "http://122.152.205.72:88/group1/M00/00/05/CpoxxF0ZmG-ALsPRAAEX2Gk9FUg848.png",
            "backgroundColor": "#f44661",
            "itemId": "nut-1004",
            "catId": "",
            "type": 1,
            "sort": 1,
            "isShow": 1,
            "createTime": "2019-08-27T12:33:06.000+0000",
            "updateTime": "2019-08-24T12:33:09.000+0000"
        },
        {
            "id": "c-10013",
            "imageUrl": "http://122.152.205.72:88/group1/M00/00/05/CpoxxF0ZmHiAWwR7AAFdqZHw8jU876.png",
            "backgroundColor": "#000240",
            "itemId": "",
            "catId": "51",
            "type": 2,
            "sort": 2,
            "isShow": 1,
            "createTime": "2019-08-25T12:33:06.000+0000",
            "updateTime": "2019-08-25T12:33:09.000+0000"
        }
    ]
}

这样前端根据后端返回的json数据,作出响应的处理,将数据渲染到html界面上。

关注我,持续更新springboot系列。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值