当前位置: 首页 > news >正文

Springboot如何快速生成分页展示以及统计条数

这是表结构: 

前置知识:

分页查询公式():
-- 推导一个公式
-- select * from emp 
-- 	order by empno
-- 	limit 每页显示记录数 * (第几页-1),每页显示记录数
统计条数公式:
select count(*) from emp;
自定义一个请求返回格式,使请求结果统一:
 
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {private Integer code;// 响应码: 1代表成功  0 代表失败private String mes; // 响应信息 描述字符串private Object date; // 返回的数据public static Result success(){return new Result(1, "success", null);}public static Result success(Object date){return new Result(1, "success", date);}public static Result error(String msg){return new Result(0, msg, null);}
}

 手撕原始代码:

1.Mapper(DAO)层:
@Mapper
public interface EmpMapper {@Select("select count(*) from emp")public long count();@Select("select * from emp limit #{start},#{pageSize}")public List<Emp> page(Integer start,Integer pageSize);
}
2. Service服务接口层:
public interface EmpService {Pagebean page(Integer page, Integer pageSize);
}
实现Service服务类:
@Service
public class EmpServiceImpl implements EmpService{@Autowiredprivate EmpMapper empMapper;@Overridepublic 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;}
}
3.Controller层:
@Slf4j
@RestController
public class EmpController {@Autowiredprivate EmpService empService;@GetMapping("/emps")public Result page(@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize){log.info("分页查询,参数: {},{}", page,pageSize);//调用service分页查询Pagebean pagebean =  empService.page(page,pageSize);return Result.success(pagebean);}
}

完结,在postman测试成功!

使用pagehelper插件快速开发:

1.配置pox.xml,添加相关依赖:
<!--        PageHelper分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.2</version></dependency>
2. Mapper(DAO)层:
@Mapper
public interface EmpMapper {@Select("select * from emp")public List<Emp> list();}
3.Service接口层:
public interface EmpService {Pagebean page(Integer page, Integer pageSize);
}

4.实现Service服务类:

@Service
public class EmpServiceImpl implements EmpService{@Autowiredprivate EmpMapper empMapper;@Overridepublic Pagebean page(Integer page, Integer pageSize) {//1.设置分页参数PageHelper.startPage(page, pageSize);//2.执行查询List<Emp> empList = empMapper.list();Page<Emp> p = (Page<Emp>) empList;//3.封装pageBean对象Pagebean pageBean = new Pagebean(p.getTotal(), p.getResult());return pageBean;}
}
 4.Controller层(不用改动,与上文一致):
@Slf4j
@RestController
public class EmpController {@Autowiredprivate EmpService empService;@GetMapping("/emps")public Result page(@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize){
//        if(page == null){
//            page = 1;
//        }
//        if(pageSize == null) {
//            pageSize = 10;
//        }log.info("分页查询,参数: {},{}", page,pageSize);//调用service分页查询Pagebean pagebean =  empService.page(page,pageSize);return Result.success(pagebean);}
}
5.启动程序:

自行进行测试,完结散花! 

http://www.lryc.cn/news/249340.html

相关文章:

  • 数据结构:图文详解顺序表的各种操作(新增元素,查找元素,删除元素,给指定位置元素赋值)
  • 2023 年 IntelliJ IDEA下载、安装教程,附详细图文
  • C++——解锁string常用接口
  • Stable Video Diffusion(SVD)参数使用教程
  • 【传智杯】排排队、小卡与质数 2、1024 程序员节发橙子题解
  • Oracle
  • 2023年c语言程序设计大赛
  • 9.vue3项目(九):spu管理页面的新增和修改
  • 人工智能:让生活更便捷、更智能——探讨人工智能在生活中的作用与挑战
  • 【C++】类和对象——const修饰成员函数和取地址操作符重载
  • express+mySql实现用户注册、登录和身份认证
  • 【PyTorch】(二)加载数据集
  • 如何提高3D建模技能?
  • 【前端开发】Next.js与Nest.js之间的差异2023
  • 【CAN通信】CanIf模块详细介绍
  • PS最新磨皮软件Portraiture4.1.2
  • 旋转框(obb)目标检测计算iou的方法
  • render函数举例
  • 微信小程序文件预览和下载-文件系统
  • 图解Redis适用场景
  • 掌握Python BentoML:构建、部署和管理机器学习模型
  • 西南科技大学模拟电子技术实验二(二极管特性测试及其应用电路)预习报告
  • 熟悉SVN基本操作-(SVN相关介绍使用以及冲突解决)
  • 代码随想录二刷 |字符串 |反转字符串II
  • 哪吒汽车拔头筹,造车新势力首家泰国工厂投产
  • Redis String类型
  • lxd提权
  • Ubuntu+Tesla V100环境配置
  • leetcode:用栈实现队列(先进先出)
  • <JavaEE> 什么是进程控制块(PCB Process Control Block)?