分页插件pageHelper

传统的分页查询

分析

image-20240310102734788

select * from emp limit ?,?
select count(*) from emp;

我们可以去定义一个实体类去接收后台返回给前端的数据

@Data
public class PageBean{
    private Long total; //总记录数
    private List rows;  //当前页数据列表
}

Mapper

@Mapper
public interface EmpMapper{
   	// 查询总记录数数
    @Select("select count(*) from emp")
    public Long count();
	
    // 进行分页查询获取列表数据
    // @param start  起始索引
    // @param pageSize 每页展示的记录数
    // @return
    @Select("select * from emp limit #{start},#{pageSize}")
    public List<Emp> page(Integer start,Integer pageSize);
}

Controller

@Slf4j
@RestController
public class EmpController {
    @Autowired
    pivate EmpService empService;
    
    @GetMapping("/emps")
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RquestParam(defaultValue = "10") Integer pageSize)
        PageBean pageBean = empService.page(page,pageSize);
    	return Result.success(pageBean);
}

@Service

@Override
public pageBean page(Integer page,Integer pageSize){
    //1.获取总记录数
    Long count = empMapper.count();
    
    //2.获取分页查询结果列表
    Integer start = (page-1) * pageSize;
    List<Emp> empList = empMapper.page(start,pageSize);
    
    //3.封装pageBean对象
    PageBean pageBean = new PageBean(count,empList);
    return pageBean;
}

小结:

@RequestParam 的属性defaultValue 可以来设置参数的默认值

image-20240310105833171

分页插件pageHelper

你会发现原始模式会比较繁琐,步骤固定但是代码繁琐

image-20240310110157132

分页插件帮我们写了哪些SQL?

select count(*) from emp;
select * from emp limit #{start},#{pageSize}

image-20240310111508649

调用startPage();方法传入page 和pageSize

然后再把查询的结果强行转为page

核心代码

PageHelper.startPage(page,pageSize);
Limit<Emp> empList = empMapper.list();
Page<Emp> p = (Page<Emp>) empList;
PageBean pageBean = new PageBean(p.getTotal(),p.getResult());
return pageBean;

引入依赖

<!--     分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.2</version>
        </dependency>

Mapper

@Select("select * from emp")
public List<Emp> list();

Service

image-20240310110906311


所有与分页相关的操作都是由插件帮我们完成,我们只需要执行正常的查询

image-20240310111347198

image-20240310111909509

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值