• SpringBoot分页实现查询数据


    1.原生查询

    1.1创建分页查询实体类

    1. package com.itheima.pojo;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. import java.util.List;
    6. //分页查询结果封装类
    7. @Data
    8. @NoArgsConstructor
    9. @AllArgsConstructor
    10. public class PageBean {
    11. private Long total; //总记录数
    12. private List rows; //数据列表
    13. }

    1.2编写控制类

    1. package com.itheima.controller;
    2. import com.itheima.pojo.PageBean;
    3. import com.itheima.pojo.Result;
    4. import com.itheima.service.EmpService;
    5. import lombok.extern.slf4j.Slf4j;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.format.annotation.DateTimeFormat;
    8. import org.springframework.web.bind.annotation.GetMapping;
    9. import org.springframework.web.bind.annotation.RequestParam;
    10. import org.springframework.web.bind.annotation.RestController;
    11. import java.time.LocalDate;
    12. /**
    13. * 员工管理Controller
    14. */
    15. //开启日志
    16. @Slf4j
    17. @RestController
    18. public class EmpController {
    19. @Autowired
    20. private EmpService empService;
    21. @GetMapping("/emps")
    22. // 能够拿到前端传递过来的参数
    23. public Result page(@RequestParam(defaultValue = "1") Integer page,
    24. @RequestParam(defaultValue = "10") Integer pageSize,
    25. String name, Short gender,
    26. @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
    27. @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
    28. // 设置默认值
    29. // if(page==null) page=1;
    30. // if(pageSize==null) pageSize=10;
    31. log.info("分页查询参数,参数:{},{},{},{}", page, pageSize, name, gender, begin, end);
    32. PageBean pageBean = empService.page(page, pageSize);
    33. // ,name, gender, begin, end
    34. return Result.success(pageBean);
    35. }
    36. }

    1.3接口

    1. package com.itheima.service;
    2. import com.itheima.pojo.PageBean;
    3. /**
    4. * 员工管理
    5. */
    6. public interface EmpService {
    7. // 分页查询
    8. PageBean page(Integer page, Integer pageSize);
    9. // , String name, Short gender, LocalDate begin, LocalDate end
    10. }

    1.4实现接口类

    1. package com.itheima.service.impl;
    2. import com.itheima.mapper.EmpMapper;
    3. import com.itheima.pojo.Emp;
    4. import com.itheima.pojo.PageBean;
    5. import com.itheima.service.EmpService;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.stereotype.Service;
    8. import java.util.List;
    9. @Service
    10. public class EmpServiceImpl implements EmpService {
    11. @Autowired
    12. private EmpMapper empMapper;
    13. @Override
    14. public PageBean page(Integer page, Integer pageSize) {
    15. // 获取总记录数
    16. Long count = empMapper.count();
    17. // 分页查询结果列表
    18. // 起始索引计算
    19. Integer startIndex = (page - 1) * pageSize;
    20. List empList = empMapper.page(startIndex, pageSize);
    21. // 封装PageBean对象
    22. PageBean pageBean = new PageBean(count, empList);
    23. return pageBean;
    24. }
    25. // @Override
    26. // public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
    27. 1.设置分页参数
    28. // PageHelper.startPage(page, pageSize);
    29. 2.执行查询
    30. // List empList = empMapper.list(name, gender, begin, end);
    31. 将empList强转为Page类型
    32. Page是一个分页对象,包含了总记录数和分页后的查询结果。
    33. // Page p=(Page) empList;
    34. 封装PageBean对象
    35. // PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
    36. //
    37. // return pageBean;
    38. // }
    39. }

    1.5 mapper接口类

    1. package com.itheima.mapper;
    2. import com.itheima.pojo.Emp;
    3. import org.apache.ibatis.annotations.Mapper;
    4. import org.apache.ibatis.annotations.Select;
    5. import java.util.List;
    6. /**
    7. * 员工管理
    8. */
    9. @Mapper
    10. public interface EmpMapper {
    11. // 查询总记录数
    12. @Select("select count(*) from emp")
    13. public Long count();
    14. //分页查询获取列表数据
    15. @Select("select * from emp limit #{start},#{pageSize}")
    16. public List page(Integer start,Integer pageSize);
    17. // 员工信息查询
    18. // @Select("select * from emp")
    19. // public List list();
    20. // String name, Short gender, LocalDate begin, LocalDate end
    21. }

     1.6数据库结构

    1.7测试接口

    1.8 application.properties

    1. #驱动类名称
    2. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    3. #数据库连接的url
    4. spring.datasource.url=jdbc:mysql://localhost:3306/tlias
    5. #连接数据库的用户名
    6. spring.datasource.username=root
    7. #连接数据库的密码
    8. spring.datasource.password=123456
    9. #配置mybatis的日志, 指定输出到控制台
    10. mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    11. #开启mybatis的驼峰命名自动映射开关 a_column ------> aCloumn
    12. mybatis.configuration.map-underscore-to-camel-case=true

    2.PageHelper

    说明:分页插件提示效率。按条件查询

    2.1配置依赖

    1. <dependency>
    2. <groupId>com.github.pagehelpergroupId>
    3. <artifactId>pagehelper-spring-boot-starterartifactId>
    4. <version>1.4.2version>
    5. dependency>

    2.2 创建分页查询实体类

    1. package com.itheima.pojo;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. import java.util.List;
    6. //分页查询结果封装类
    7. @Data
    8. @NoArgsConstructor
    9. @AllArgsConstructor
    10. public class PageBean {
    11. private Long total; //总记录数
    12. private List rows; //数据列表
    13. }

    2.3编写控制类

    1. package com.itheima.controller;
    2. import com.itheima.pojo.PageBean;
    3. import com.itheima.pojo.Result;
    4. import com.itheima.service.EmpService;
    5. import lombok.extern.slf4j.Slf4j;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.format.annotation.DateTimeFormat;
    8. import org.springframework.web.bind.annotation.GetMapping;
    9. import org.springframework.web.bind.annotation.RequestParam;
    10. import org.springframework.web.bind.annotation.RestController;
    11. import java.time.LocalDate;
    12. /**
    13. * 员工管理Controller
    14. */
    15. //开启日志
    16. @Slf4j
    17. @RestController
    18. public class EmpController {
    19. @Autowired
    20. private EmpService empService;
    21. @GetMapping("/emps")
    22. // 能够拿到前端传递过来的参数
    23. public Result page(@RequestParam(defaultValue = "1") Integer page,
    24. @RequestParam(defaultValue = "10") Integer pageSize,
    25. String name, Short gender,
    26. @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
    27. @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
    28. // 设置默认值
    29. // if(page==null) page=1;
    30. // if(pageSize==null) pageSize=10;
    31. log.info("分页查询参数,参数:{},{},{},{}", page, pageSize, name, gender, begin, end);
    32. PageBean pageBean = empService.page(page, pageSize,name, gender, begin, end);
    33. //
    34. return Result.success(pageBean);
    35. }
    36. }

     2.4接口

    1. package com.itheima.service;
    2. import com.itheima.pojo.PageBean;
    3. import java.time.LocalDate;
    4. /**
    5. * 员工管理
    6. */
    7. public interface EmpService {
    8. // 分页查询
    9. PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
    10. //
    11. }

    2.5实现接口类

    1. package com.itheima.service.impl;
    2. import com.github.pagehelper.Page;
    3. import com.github.pagehelper.PageHelper;
    4. import com.itheima.mapper.EmpMapper;
    5. import com.itheima.pojo.Emp;
    6. import com.itheima.pojo.PageBean;
    7. import com.itheima.service.EmpService;
    8. import org.springframework.beans.factory.annotation.Autowired;
    9. import org.springframework.stereotype.Service;
    10. import java.time.LocalDate;
    11. import java.util.List;
    12. @Service
    13. public class EmpServiceImpl implements EmpService {
    14. @Autowired
    15. private EmpMapper empMapper;
    16. // @Override
    17. // public PageBean page(Integer page, Integer pageSize) {
    18. 获取总记录数
    19. // Long count = empMapper.count();
    20. 分页查询结果列表
    21. 起始索引计算
    22. // Integer startIndex = (page - 1) * pageSize;
    23. // List empList = empMapper.page(startIndex, pageSize);
    24. 封装PageBean对象
    25. // PageBean pageBean = new PageBean(count, empList);
    26. //
    27. // return pageBean;
    28. // }
    29. @Override
    30. public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
    31. //
    32. // 1.设置分页参数
    33. PageHelper.startPage(page, pageSize);
    34. // 2.执行查询
    35. List empList = empMapper.list(name, gender, begin, end);
    36. //
    37. // 将empList强转为Page类型
    38. // Page是一个分页对象,包含了总记录数和分页后的查询结果。
    39. Page p=(Page) empList;
    40. // 封装PageBean对象
    41. PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
    42. return pageBean;
    43. }
    44. }

    2.6mapper接口类

    1. package com.itheima.mapper;
    2. import com.itheima.pojo.Emp;
    3. import org.apache.ibatis.annotations.Mapper;
    4. import org.apache.ibatis.annotations.Select;
    5. import java.time.LocalDate;
    6. import java.util.List;
    7. /**
    8. * 员工管理
    9. */
    10. @Mapper
    11. public interface EmpMapper {
    12. // 查询总记录数
    13. // @Select("select count(*) from emp")
    14. // public Long count();
    15. //分页查询获取列表数据
    16. // @Select("select * from emp limit #{start},#{pageSize}")
    17. // public List page(Integer start,Integer pageSize);
    18. // 员工信息查询
    19. @Select("select * from emp")
    20. public List list(String name, Short gender, LocalDate begin, LocalDate end);
    21. //
    22. }

    2.7测试接口

    2.8项目结构

  • 相关阅读:
    mysql数据的备份和恢复
    mongodb 数据分析
    Redis安装
    使用 Hugging Face 微调 Gemma 模型
    ECA-Net(Efficient Channel Attention Network)
    基于Java web的校园滴滴代驾管理系统 毕业设计-附源码260839
    高等数学(第七版)同济大学 习题8-1 个人解答
    MySQL-DDL语句
    设计模式之装饰者模式
    java毕业设计在线毕设选题系统Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/m0_62785037/article/details/133032605