当前位置:   article > 正文

SpringBoot学习基础一优化分页查询_springboot 如何优化分页查询

springboot 如何优化分页查询

一  pagehelp引入原因

 该插件可以自动帮我们计算start以及SQL查询想要展示数据语句,例如:

@Select("select * from emp limit #{start},#{pageSize};")

这种查询语句,他都会帮我们自动的完成。

 1.在分页查询当中我们需要接收的参数有count(数据总数),result(查询结果,即需要展示的数据),并且在Controller当中我们也需要根据接收到的page(页面序号),pageSize(每个页面需要展示的数据条数),值得一说的是我们可以使用@RequestParam注解当中的defaultValue来设置属性的默认值

  1. @RequestParam(defaultValue = "1") Integer page,
  2. @RequestParam(defaultValue = "10") Integer pageSize,

然后根据起始索引计算公式start = (page-1)*pageSize,得出start,最后根据SQL语句当中的查询语句来得到结果。这种传统方式步骤更为固定,代码繁琐。

2.需要导入的pom.xml相关依赖:

  1. <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
  2. <dependency>
  3. <groupId>com.github.pagehelper</groupId>
  4. <artifactId>pagehelper-spring-boot-starter</artifactId>
  5. <version>1.4.6</version>
  6. </dependency>

   

3.由此引入pagehelper插件来进行优化分页查询:

Controller层代码:

  1. @GetMapping
  2. public Result page(@RequestParam(defaultValue = "1") Integer page,
  3. @RequestParam(defaultValue = "10") Integer pageSize,
  4. String name, Short gender,
  5. @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
  6. @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
  7. log.info("分页查询参数:{},{},{},{}", page, pageSize,begin,end);
  8. PageBean pageBean = empService.page(page, pageSize,name, gender, begin, end);
  9. return Result.success(pageBean);
  10. }

Service层代码:

PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
  1. /**
  2. * 使用pagehelp插件来优化分页查询
  3. */
  4. @Override
  5. public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
  6. //设置分页参数
  7. PageHelper.startPage(page, pageSize);
  8. //执行查询操作,并将结果转换为Page形式
  9. List<Emp> empList = empMapper.list(name,gender,begin,end);
  10. Page<Emp> p = (Page<Emp>) empList;
  11. //封装为一个pageBean对象
  12. PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
  13. return pageBean;
  14. }

Mapper层代码:

 public List<Emp> list(String name, Short gender, LocalDate begin, LocalDate end);
  1. <select id="list" resultType="com.example.springbootitheima.pojo.Emp">
  2. select *
  3. from emp
  4. <where>
  5. <if test="name != null and name != ''">
  6. name like concat('%', #{name}, '%')
  7. </if>
  8. <if test="gender != null">
  9. and gender = #{gender}
  10. </if>
  11. <if test="begin != null and end != null">
  12. and entrydate between #{begin} and #{end}
  13. </if>
  14. </where>
  15. order by update_time desc
  16. </select>

   这种方式不仅简化了代码量,而且使得代码逻辑更加严谨,减少查询数据库操作


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/676982
推荐阅读
相关标签
  

闽ICP备14008679号