赞
踩
该插件可以自动帮我们计算start以及SQL查询想要展示数据语句,例如:
@Select("select * from emp limit #{start},#{pageSize};")
这种查询语句,他都会帮我们自动的完成。
1.在分页查询当中我们需要接收的参数有count(数据总数),result(查询结果,即需要展示的数据),并且在Controller当中我们也需要根据接收到的page(页面序号),pageSize(每个页面需要展示的数据条数),值得一说的是我们可以使用@RequestParam注解当中的defaultValue来设置属性的默认值
- @RequestParam(defaultValue = "1") Integer page,
- @RequestParam(defaultValue = "10") Integer pageSize,
然后根据起始索引计算公式start = (page-1)*pageSize,得出start,最后根据SQL语句当中的查询语句来得到结果。这种传统方式步骤更为固定,代码繁琐。
2.需要导入的pom.xml相关依赖:
- <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper-spring-boot-starter</artifactId>
- <version>1.4.6</version>
- </dependency>
3.由此引入pagehelper插件来进行优化分页查询:
Controller层代码:
- @GetMapping
- public Result page(@RequestParam(defaultValue = "1") Integer page,
- @RequestParam(defaultValue = "10") Integer pageSize,
- String name, Short gender,
- @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
- @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
-
- log.info("分页查询参数:{},{},{},{}", page, pageSize,begin,end);
- PageBean pageBean = empService.page(page, pageSize,name, gender, begin, end);
- return Result.success(pageBean);
- }
Service层代码:
PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
- /**
- * 使用pagehelp插件来优化分页查询
- */
- @Override
- public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
- //设置分页参数
- PageHelper.startPage(page, pageSize);
-
- //执行查询操作,并将结果转换为Page形式
- List<Emp> empList = empMapper.list(name,gender,begin,end);
- Page<Emp> p = (Page<Emp>) empList;
- //封装为一个pageBean对象
- PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
- return pageBean;
- }
Mapper层代码:
public List<Emp> list(String name, Short gender, LocalDate begin, LocalDate end);
- <select id="list" resultType="com.example.springbootitheima.pojo.Emp">
- select *
- from emp
- <where>
- <if test="name != null and name != ''">
- name like concat('%', #{name}, '%')
- </if>
- <if test="gender != null">
- and gender = #{gender}
- </if>
- <if test="begin != null and end != null">
- and entrydate between #{begin} and #{end}
- </if>
- </where>
- order by update_time desc
-
- </select>
这种方式不仅简化了代码量,而且使得代码逻辑更加严谨,减少查询数据库操作
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。