当前位置: 首页 > article >正文

SpringBoot之整合PageHelper分页插件

SpringBoot之整合PageHelper分页插件

文章目录

  • SpringBoot之整合PageHelper分页插件
  • 1. 引入坐标
  • 2. application.yml配置
  • 3. 基本使用
  • 4. 对多个查询执行分页
    • 1. 默认第一个Select语句会执行分页
    • 2. 让Pagehelper也能执行多个分页的方法
    • 3. 完整案例

详细配置请查看官网或MyBatis分页插件之PageHelper详细介绍-CSDN博客

1. 引入坐标

<!--pagehelper-->
			<dependency>
				<groupId>com.github.pagehelper</groupId>
				<artifactId>pagehelper-spring-boot-starter</artifactId>
				<version>1.3.0</version>
				<!--排除pagehelper的依赖mybatis和mybatis-spring的jar包以免与mybatis-plus的冲突,导致报NoClassFound org.mybatis.logging.LoggerFactory-->
				<exclusions>
					<exclusion>
						<groupId>org.mybatis</groupId>
						<artifactId>mybatis</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.mybatis</groupId>
						<artifactId>mybatis-spring</artifactId>
					</exclusion>
				</exclusions>
			</dependency>

2. application.yml配置

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

3. 基本使用

    @Autowired
    private PublicService publicService;	   
    @GetMapping(value = "/getUserList")
    public Result<PageInfo> getUserList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                 @RequestParam(name="pageSize", defaultValue="5") Integer pageSize){
        StringBuffer sql = new StringBuffer();
         sql.append("SELECT\n" +
                " a.id,\n" +
                " a.username,\n" +
                " b.id AS file_id,\n" +
                " b.file_url,\n" +
                " b.file_size,\n" +
                "FROM\n" +
                " sys_user a\n" +
                " LEFT JOIN sys_file b ON a.id = b.parent_id \n" +
                "WHERE\n" +
                " a.del_flag = '0'");
        Result result = new Result<>();
        Map map = new HashMap(5);
        map.put("sql",sql.toString());
        //获取第pageNo页,pageSize条内容,默认查询总数count
        PageHelper.startPage(pageNo, pageSize);
        //紧跟着的第一个select方法会被分页
        List<Map<String, Object>> mapList = publicService.sqlQuery(map);
        result.setResult(mapList);
        result.setSuccess(true);
        PageInfo pageInfo = new PageInfo(mapList);
        return Result.OK(pageInfo);

4. 对多个查询执行分页

Pagehelper中只有紧跟在 PageHelper.startPage 方法后的第一个 Mybatis 的查询(Select)方法会被分页。

1. 默认第一个Select语句会执行分页

案例代码如下:

 
@Autowired
private PublicService publicService;

public List<SignatureUser> getUserList(){
        //获取第pageNo页,pageSize条内容,默认查询总数count
        PageHelper.startPage(pageNo, pageSize);
        //紧跟着的第一个select方法会被分页
        List<Map<String, Object>> mapList = publicService.sqlQuery(map);
        IPage iPage = IPageUtil.pageData(mapList);
        //下面这个查询不会分页
        List<SignatureUser> signatureUserList = publicService.getSignatureUserList(map);
        System.out.println(signatureUserList.size());
        return signatureUserList;
}

2. 让Pagehelper也能执行多个分页的方法

在查询参数中设置pageNum与pageSize参数使其第二个查询也能分页,如下:

@Autowired
private PublicService publicService; 

public List<SignatureUser> getUserList(){
        //获取第pageNo页,pageSize条内容,默认查询总数count
        PageHelper.startPage(pageNo, pageSize);
        //紧跟着的第一个select方法会被分页
        List<Map<String, Object>> mapList = publicService.sqlQuery(map);
        IPage iPage = IPageUtil.pageData(mapList);
        System.out.println("第一个查询分页结果",iPage);
        Map map1 = new HashMap(3);
        //加入mybatis分页的参数pageNum与pageSize则其他查询也能分页
        map1.put("pageNum", pageNo);
        map1.put("pageSize", pageSize);
        List<SignatureUser> signatureUserList = publicService.getSignatureUserList(map1);
        System.out.println(signatureUserList.size());
        return signatureUserList;
}

3. 完整案例

    @Autowired
    private PublicService publicService; 

    @ApiOperation(value = "用户信息列表", notes = "用户信息列表")
    @GetMapping(value = "/getUserList")
    public Result<?> getUserList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                 @RequestParam(name="pageSize", defaultValue="5") Integer pageSize){
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT\n" +
                " a.id,\n" +
                " a.username,\n" +
                " b.id AS file_id,\n" +
                " b.file_url,\n" +
                " b.file_size,\n" +
                "FROM\n" +
                " sys_user a\n" +
                " LEFT JOIN sys_file b ON a.id = b.parent_id \n" +
                "WHERE\n" +
                " a.del_flag = '0'");
        //一.直接sql方式分页
        Map map = new HashMap(5);
        map.put("sql",sql.toString());
        //获取第pageNo页,pageSize条内容,默认查询总数count
        PageHelper.startPage(pageNo, pageSize);
        //紧跟着的第一个select方法会被分页
        List<Map<String, Object>> mapList = publicService.sqlQuery(map);
        IPage iPage = IPageUtil.pageData(mapList);
        //return Result.OK(iPage);
        
        
        //二.对象集合分页
        Map map1 = new HashMap(3);
        map1.put("pageNum", pageNo);
        map1.put("pageSize", pageSize);
        List<SignatureUser> signatureUserList = publicService.getSignatureUserList(map1);
        System.out.println(signatureUserList.size());
        return Result.OK(IPageUtil.pageData(signatureUserList));
    }

http://www.kler.cn/a/229595.html

相关文章:

  • Redis 优化秒杀(异步秒杀)
  • CVE-2025-22777 (CVSS 9.8):WordPress | GiveWP 插件的严重漏洞
  • Vue.js组件开发-图片剪裁性能优化最佳方案实例
  • 【数学】概率论与数理统计(五)
  • Elasticsearch学习(1) : 简介、索引库操作、文档操作、RestAPI、RestClient操作
  • fastapi 使用
  • Android rom定制 修改system分区的容量大小
  • Kotlin手记(一):基础大杂烩
  • Spring MVC跨域设置
  • mac检查CPU温度和风扇速度软件:Macs Fan Control Pro 1.5.17中文版
  • RabbitMQ_00000
  • docker部署docker运维工具
  • MongoDB从入门到实战之Docker快速安装MongoDB
  • Go语言每日一练 ——链表篇(三)
  • XGB-3: 模型IO
  • [UI5 常用控件] 06.Splitter,ResponsiveSplitter
  • node环境打包js,webpack和rollup两个打包工具打包,能支持vue
  • SpringBoot中使用Spring自带线程池ThreadPoolTaskExecutor与Java8CompletableFuture实现异步任务示例
  • YOLOv8改进 | 检测头篇 | 独创RFAHead检测头超分辨率重构检测头(适用Pose、分割、目标检测)
  • 深度强化学习基础【1】-动态规划问题初探(leetcode算法的63题-不同路径II)
  • 题目:有1,2,3,4共四个数字,能组成多少个不相同而且无重复数字的三位数有多少个,都是多少?lua
  • 忘记 RAG:拥抱Agent设计,让 ChatGPT 更智能更贴近实际
  • 【数据结构和算法】--- 基于c语言排序算法的实现(1)
  • Elasticsearch:基本 CRUD 操作 - Python
  • PyTorch和TensorFlow的简介
  • 画出TCP三次握手和四次挥手的示意图,并且总结TCP和UDP的区别