springboot2之系统架构基础(四) pagehelper 使用详解

本文详细介绍如何在Spring Boot项目中实现分页查询,包括引入PageHelper分页插件、封装查询与分页对象、service层与controller层的实现代码,以及WebResponse数据封装,为前端提供高效的数据查询接口。

step1:

引入jar包



<!-- 分页jar包 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

引入的jar包必须是要pagehelper-spring-boot-starter如果单独引入pagehelper的话,分页会不成功

step2:

封装查询对象及分页对象

分页对象(使用lombok插件可以不写set,get方法,简化代码)

package com.cmft.eams.common.model;

import lombok.Data;

/**
 * @Description:分页查询
 * @author yinglai.yuan
 * @date 2018年11月2日 下午3:33:21
 */
@Data
public class PageQuery extends BaseObject {

	// 默认页码
	private int pageNum = 1;

	// 默认分页大小
	private int pageSize = 10;
}

查询对象

package com.cmft.eams.app.business.assetmng.model.query;


import com.cmft.eams.common.model.PageQuery;
import lombok.Data;

/**
 * @Author: hg
 * @Date: 2018/11/15 15:37
 * @Version 1.0
 */

@Data
public class AssetInfoQuery extends PageQuery {

    /**
     * 资产名称
     */
    private String assetName;

    /**
     * 设备序列号
     */
    private String deviceNo;


    /**
     * 职场id
     */
    private Long positionId;


    /**
     * 归属部门
     */
    private String departmentId;


    /**
     * 资产分类code,编码表
     */
    private String categoryCode;

}

step3:

service层实现代码:

/**
     * 资产查询----查询
     * @param assetInfoQuery
     * @return
     */
    @Override
    public WebResponse getAssetInfo(AssetInfoQuery assetInfoQuery) {
        // 分页代码
        PageHelper.startPage(assetInfoQuery.getPageNum(), assetInfoQuery.getPageSize());
        List<AssetInfoVo> data =  assetInfoMapper.selectAssetInfo(assetInfoQuery);
        PageInfo<AssetInfoVo> pageInfo = new PageInfo<>(data);
        return WebResponse.buildSuccessGrid(pageInfo);
    }

注意:使用时PageHelper.startPage(pageNum, pageSize)一定要放在列表查询上面,这样在查询时会查出相应的数据量且会查询出总数

step4:

controller层代码

/**
     * 资产查询----查询
     */
    @GetMapping("/getAssetInfo")
    public WebResponse getAssetInfo(@RequestBody AssetInfoQuery assetInfoQuery){
        return bssetStorageService.getAssetInfo(assetInfoQuery);
    }



WebResponse对象为系统统一封装数据返回给前端接收对象。后续写上... ...

你可以通过以下步骤封装Spring Boot和MyBatis Plus的分页功能: 1. 首先,确保你已经添加了Spring Boot和MyBatis Plus的依赖项到你的项目中。 2. 创建一个自定义的分页查询类,例如 `PageQuery`,用于封装分页查询的参数。该类应包含以下属性: ```java public class PageQuery { private int page; // 当前页码 private int size; // 每页显示的记录数 // 省略getter和setter方法 } ``` 3. 在你的数据访问层(如DAO或Mapper)中,使用MyBatis Plus提供的 `Page` 类来进行分页查询。例如: ```java import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; public interface UserMapper { Page<User> getUserList(Page<User> page, @Param("query") PageQuery query); } ``` 4. 在你的服务层(Service)中,调用上一步定义的方法来进行分页查询。例如: ```java import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserMapper userMapper; public Page<User> getUserList(PageQuery query) { Page<User> page = new Page<>(query.getPage(), query.getSize()); return userMapper.getUserList(page, query); } } ``` 5. 在你的控制器(Controller)中,注入服务类,并处理分页查询请求。例如: ```java import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping public Page<User> getUserList(PageQuery query) { return userService.getUserList(query); } } ``` 现在,你可以通过发送 GET 请求到 `/users` 接口来获取分页查询结果。请求中可以包含 `page` 和 `size` 参数来指定页码和记录数。例如:`/users?page=1&size=10`。 这样,你就成功封装了Spring Boot和MyBatis Plus的分页功能。希望对你有所帮助!
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值