SpringBoot框架——SpringBoot整合PageHelper

PageHelper插件

我们在正常的查询业务之中,只需要加上一行代码就可以实现分页的数据的封装处理

实现原理

PageHelper方法使用了静态的ThreadLocal参数,分页参数和线程是绑定的。内部流程是ThreadLocal中设置了分页参数(pageIndex,pageSize),之后在查询执行的时候,获取当线程中的分页参数,执行查询的时候通过拦截器在sql语句中添加分页参数,之后实现分页查询,查询结束后在 finally 语句中清除ThreadLocal中的查询参数

使用方法

1.调用PageHelper方法:PageHelper.startPage(pageNum, pageSize)

2. MyBatis 查询方法

注意:只要你可以保证在PageHelper方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为PageHelper在finally代码段中自动清除了ThreadLocal存储的对象。

MyBatis整合PageHelper插件,自行阅读即可

mybatis中pageHelper的配置使用_灵泽~的博客-CSDN博客

添加PageHelper启动器依赖

1.	<dependency>
2.	    <groupId>com.github.pagehelper</groupId>
3.	    <artifactId>pagehelper-spring-boot-starter</artifactId>
4.	    <version>1.2.12</version>
5.	</dependency>

EmpController

1.	package com.msb.controller;
2.	
3.	import com.msb.pojo.Emp;
4.	import com.msb.service.EmpService;
5.	import org.springframework.beans.factory.annotation.Autowired;
6.	import org.springframework.stereotype.Controller;
7.	import org.springframework.web.bind.annotation.PathVariable;
8.	import org.springframework.web.bind.annotation.RequestMapping;
9.	import org.springframework.web.bind.annotation.ResponseBody;
10.	
11.	import java.util.List;
12.	
13.	/**
14.	 * @Author: Ma HaiYang
15.	 * @Description: MircoMessage:Mark_7001
16.	 */
17.	@Controller
18.	@RequestMapping("/emp")
19.	public class EmpController {
20.	
21.	    @Autowired
22.	    private EmpService empService;
23.	
24.	    @RequestMapping("/findByPage/{pageNum}/{pageSize}")
25.	    @ResponseBody
26.	    public List<Emp> findByPage(@PathVariable("pageNum") Integer pageNum,@PathVariable("pageSize") Integer pageSize){
27.	        return empService.findByPage(pageNum,pageSize);
28.	    }
29.	}

Service层代码编写

1.	package com.msb.service.impl;
2.	
3.	import com.github.pagehelper.Page;
4.	import com.github.pagehelper.PageHelper;
5.	import com.github.pagehelper.PageInfo;
6.	import com.msb.mapper.EmpMapper;
7.	import com.msb.pojo.Emp;
8.	import com.msb.service.EmpService;
9.	import org.springframework.beans.factory.annotation.Autowired;
10.	import org.springframework.stereotype.Service;
11.	
12.	import java.util.List;
13.	
14.	/**
15.	 * @Author: Ma HaiYang
16.	 * @Description: MircoMessage:Mark_7001
17.	 */
18.	@Service
19.	public class EmpServiceImpl implements EmpService {
20.	    @Autowired
21.	    private EmpMapper empMapper;
22.	    @Override
23.	    public List<Emp> findByPage(Integer pageNum, Integer pageSize) {
24.	        Page<Emp> page = PageHelper.startPage(pageNum, pageSize);
25.	        List<Emp> list =empMapper.findAll();
26.	
27.	        // 方式1
28.	        System.out.println("当前页:"+page.getPageNum());
29.	        System.out.println("总页数"+page.getPages());
30.	        System.out.println("页大小:"+page.getPageSize());
31.	        System.out.println("总记录数:"+page.getTotal());
32.	        System.out.println("当前页数据"+page.getResult());
33.	
34.	        // 方式2
35.	        PageInfo<Emp> pi =new PageInfo<>(list);
36.	        System.out.println("当前页"+pi.getPageNum());
37.	        System.out.println("总页数"+pi.getPages());
38.	        System.out.println("页大小"+pi.getSize());
39.	        System.out.println("总记录数"+pi.getTotal());
40.	        System.out.println("当前页数据"+pi.getList());
41.	
42.	        return list;
43.	    }
44.	}

PageInfo对象和Page对象的区别

Page和PageInfo_page转pageinfo_程序员^晓洋的博客-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值