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

springboot-mybatis的分页查询的接口

一、安装依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version>
</dependency>

二、代码定义

分页对象类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageBean implements Serializable {// 总记录数private Long total;// 返回参数列表private List rows;}

mapper层

直接查询所有数据即可,剩下的交给分页器

@Mapper
public interface EmpMapper {// 查询部门信息@Select("select * from emp")List<Emp> list();}

业务逻辑层

PageHelper.startPage(page, pageSize); 是 MyBatis 的一个分页插件(PageHelper)提供的方法调用,用于在数据库查询中实现分页功能。这个方法的作用是告诉 PageHelper 开始对接下来的查询进行分页处理。

具体来说,这个方法做了以下几件事情:

  1. 设置分页参数:它会根据传入的 pagepageSize 参数,自动计算出数据库查询的起始行号(offset)和每页的记录数(limit)

  2. 重写查询语句:在底层,PageHelper 会拦截你的查询语句,自动在原有的查询语句上添加分页参数,从而实现数据库的分页查询。这样,你就无需手动编写复杂的分页查询语句。

  3. 返回分页结果:分页查询完成后,PageHelper 会将查询结果封装成一个 Page 对象包含了分页信息和查询结果列表

 @AutowiredEmpMapper empMapper;@Overridepublic PageBean page(Integer page, Integer pageSize) {// 1、设置分页参数PageHelper.startPage(page, pageSize);// 2、执行分页查询语句List<Emp> empList = empMapper.list();// 3、获取分页结果Page<Emp> p = (Page<Emp>) empList;// 4、封装pageBean对象,注意对象需要序列化// p.getTotal() 获取结果条数,p.getResult()获取查询结果PageBean pageBean = new PageBean(p.getTotal(), p.getResult());return pageBean;}

控制层

  @ResponseBody@GetMappingpublic Result page( @RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize){// 传入页码和每页的条数PageBean pageBean = empService.page(page,pageSize);return Result.success(pageBean);}

三、注意实体类需要序列化

依赖

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId>
</dependency>

实体类

import com.fasterxml.jackson.annotation.JsonAutoDetect;@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class Emp {// ...
}

如果不序列化,可能产生以下错误:

No serializer found for class com.demo.tliaswebmanagement.pojo.Emp and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

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

相关文章:

  • 网络音频终端音频编码解码终端
  • cordova 12 编译失败Could not find method compile() for arguments [com....]
  • 快速开发平台 WebBuilder 9 发布
  • GPT-5出世,需5万张H100!英伟达GPU陷短缺风暴
  • Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑
  • SQL注入总结
  • Java 实现 后端分页
  • 数据结构 | 搜索和排序——排序
  • 【嵌入式环境下linux内核及驱动学习笔记-(18)LCD驱动框架1-LCD控制原理】
  • 【unity】ShaderGraph实现等高线和高程渐变设色
  • 快速修复应用程序中的问题的利器—— Android热修复
  • 什么是全局代理,手机怎么设置全局代理
  • 技术领先产品ASSAR300一一基于SAR成像的角雷达产品,助力自动泊车
  • 单元测试之 - Spring框架提供的单元/集成测试注解
  • 深入学习 Redis - 事务、实现原理、指令使用及场景
  • 异步javaScript
  • 看跨境电商世界区域分布,Live Market教你深入参与跨境创业
  • python中的装饰器的真正含义和用法
  • opencv基础-38 形态学操作-闭运算(先膨胀,后腐蚀)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
  • RocketMQ生产者和消费者都开启Message Trace后,Consume Message Trace没有消费轨迹
  • JDV背后的技术-助力618 | 京东云技术团队
  • 0基础学习VR全景平台篇 第78篇:全景相机-拍摄VR全景
  • Spring MVC简介与概述
  • java基础复习(第六日)
  • 商用服务机器人公司【Richtech Robotics】申请纳斯达克IPO上市
  • 关于nn.Embedding如何使用预定义词表
  • 怎么设置文件夹密码?文件夹密码设置方法合集
  • PEMFC氢氧质子交换燃料电池MATLAB仿真模型
  • 创建PVC注意事项
  • Sencha Ext.NET Crack 快速应用程序的正确工具集