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

SpringBoot分页实现查询数据

1.原生查询

1.1创建分页查询实体类

package com.itheima.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;//分页查询结果封装类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {private Long total; //总记录数private List rows;  //数据列表
}

1.2编写控制类

package com.itheima.controller;import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDate;/*** 员工管理Controller*/
//开启日志
@Slf4j
@RestController
public class EmpController {@Autowiredprivate EmpService empService;@GetMapping("/emps")
//    能够拿到前端传递过来的参数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) {
//        设置默认值
//        if(page==null) page=1;
//        if(pageSize==null) pageSize=10;log.info("分页查询参数,参数:{},{},{},{}", page, pageSize, name, gender, begin, end);PageBean pageBean = empService.page(page, pageSize);
//        ,name, gender, begin, endreturn Result.success(pageBean);}
}

1.3接口

package com.itheima.service;import com.itheima.pojo.PageBean;/*** 员工管理*/
public interface EmpService {//    分页查询PageBean page(Integer page, Integer pageSize);
//    , String name, Short gender, LocalDate begin, LocalDate end
}

1.4实现接口类

package com.itheima.service.impl;import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;@Overridepublic PageBean page(Integer page, Integer pageSize) {
//        获取总记录数Long count = empMapper.count();
//        分页查询结果列表
//        起始索引计算Integer startIndex = (page - 1) * pageSize;List<Emp> empList = empMapper.page(startIndex, pageSize);
//        封装PageBean对象PageBean pageBean = new PageBean(count, empList);return pageBean;}
//    @Override
//    public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {1.设置分页参数
//        PageHelper.startPage(page, pageSize);2.执行查询
//        List<Emp> empList = empMapper.list(name, gender, begin, end);将empList强转为Page类型Page<Emp>是一个分页对象,包含了总记录数和分页后的查询结果。
//        Page<Emp> p=(Page<Emp>) empList;封装PageBean对象
//        PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
//
//        return pageBean;
//    }
}

1.5 mapper接口类

package com.itheima.mapper;import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** 员工管理*/
@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);
//    员工信息查询
//    @Select("select * from emp")
//    public List<Emp> list();
//    String name, Short gender, LocalDate begin, LocalDate end
}

 1.6数据库结构

1.7测试接口

1.8 application.properties

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

2.PageHelper

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

2.1配置依赖

<!--        配置PageHelper分页插件--><dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version></dependency>

2.2 创建分页查询实体类

package com.itheima.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;//分页查询结果封装类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {private Long total; //总记录数private List rows;  //数据列表
}

2.3编写控制类

package com.itheima.controller;import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDate;/*** 员工管理Controller*/
//开启日志
@Slf4j
@RestController
public class EmpController {@Autowiredprivate EmpService empService;@GetMapping("/emps")
//    能够拿到前端传递过来的参数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) {
//        设置默认值
//        if(page==null) page=1;
//        if(pageSize==null) pageSize=10;log.info("分页查询参数,参数:{},{},{},{}", page, pageSize, name, gender, begin, end);PageBean pageBean = empService.page(page, pageSize,name, gender, begin, end);
//       return Result.success(pageBean);}
}

 2.4接口

package com.itheima.service;import com.itheima.pojo.PageBean;import java.time.LocalDate;/*** 员工管理*/
public interface EmpService {//    分页查询PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
//
}

2.5实现接口类

package com.itheima.service.impl;import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDate;
import java.util.List;@Service
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;//        @Override
//    public PageBean page(Integer page, Integer pageSize) {获取总记录数
//        Long count = empMapper.count();分页查询结果列表起始索引计算
//        Integer startIndex = (page - 1) * pageSize;
//        List<Emp> empList = empMapper.page(startIndex, pageSize);封装PageBean对象
//        PageBean pageBean = new PageBean(count, empList);
//
//        return pageBean;
//    }@Overridepublic PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
//
//    1.设置分页参数PageHelper.startPage(page, pageSize);
//    2.执行查询List<Emp> empList = empMapper.list(name, gender, begin, end);
//
//        将empList强转为Page类型
//        Page<Emp>是一个分页对象,包含了总记录数和分页后的查询结果。Page<Emp> p=(Page<Emp>) empList;
//        封装PageBean对象PageBean pageBean = new PageBean(p.getTotal(), p.getResult());return pageBean;}
}

2.6mapper接口类

package com.itheima.mapper;import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.time.LocalDate;
import java.util.List;/*** 员工管理*/
@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);
//    员工信息查询@Select("select * from emp")public List<Emp> list(String name, Short gender, LocalDate begin, LocalDate end);
//
}

2.7测试接口

2.8项目结构

相关文章:

SpringBoot分页实现查询数据

1.原生查询 1.1创建分页查询实体类 package com.itheima.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.List;//分页查询结果封装类 Data NoArgsConstructor AllArgsConstructor public class PageBean {pr…...

Jetson Xavier NX 与飞控(Pixhawk 4 Mini)实现串口通信

一、飞控端配置 首先对 Pixhawk 4 Mini 烧录固件参考 Kakute H7 刷写 px4 固件_想要个小姑娘的博客-CSDN博客 烧录完成后打开 QGroundControl&#xff0c;进入参数设置并搜索 MAV&#xff0c;如下所示 然后修改 MAV_1_CONFIG&#xff0c;修改为自己想要连接机载电脑&#xf…...

为什么2022年秋招嵌入式开发岗位薪资大涨?

今天看到一个网友讨论的问题&#xff0c;其实这个问题也很简答。从嵌入式本身优势来说&#xff0c;首先是因为该行业人才人才需求大&#xff0c;据权威统计机构统计在所有软件开发类人才的需求中&#xff0c;对嵌入式工程师的需求达到全部需求量的60%~80%&#xff0c;并且每年以…...

在HTML里,attribute和property有什么区别?

在HTML中&#xff0c;attribute 和 property 之间的区别是一个常见但容易混淆的概念。它们都与HTML元素有关&#xff0c;但它们在功能、用途和行为上有所不同。以下是它们之间的主要区别&#xff1a; 定义和来源: Attribute: 它们是在HTML标记中定义的&#xff0c;通常用于提供…...

机器学习入门与实践:从原理到代码

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 在本文中&#xff0c;我…...

SpringCloud在idea中一键启动项目

1、如下图文件中加上&#xff1a; <component name"RunDashboard"><option name"configurationTypes"><set><option value"SpringBootApplicationConfigurationType" /></set></option></component>…...

VB过程的递归调用,辗转相除法求最大公约数

VB过程的递归调用&#xff0c;辗转相除法求最大公约数 过程的递归调用&#xff0c;辗转相除法求最大公约数 Private Function gys(ByVal m%, ByVal n%) As IntegerDim r%r m Mod n m大或者n大都无所谓&#xff0c;这个不影响计算&#xff0c;由于辗转相除法的算法&#xff0c…...

OpenCV(三十九):积分图像

1.积分图像介绍 积分图像中的每个像素表示了原始图像中对应位置及其左上方矩形区域内像素值的总和。如图&#xff0c;p0表示原始图像蓝色区域内像素值的总和。 倾斜求和&#xff08;Skewed Sum&#xff09;是积分图像的一种扩展形式&#xff0c;用于计算图像区域内的像素和&…...

【Electron 拦截请求实现自定义网络处理】

文章目录 Electron 拦截请求实现自定义网络处理1. 获取默认会话2. 拦截请求3. 完整示例代码总结 Electron 拦截请求实现自定义网络处理 在 Electron 中&#xff0c;我们可以使用 session 模块来拦截和处理网络请求。通过拦截请求&#xff0c;我们可以对请求进行修改、添加请求…...

Pytest系列-内置标签skip和skipif 跳过测试用例的详细使用(5)

简介 skip和skipif&#xff0c;见名知意就是跳过测试&#xff0c;主要用于不想执行的代码&#xff0c;标记后&#xff0c;标记的代码不执行。希望满足某些条件才执行某些测试用例&#xff0c;否则pytest会跳过运行该测试用例实际常见场景&#xff1a;根据平台不同执行测试、跳…...

华为云云耀云服务器L实例评测|docker 常用操作命令

文章目录 写在前面云耀云服务器L实例与ECS的购买和配置区别 1、管理命令2、帮助命令3、镜像命令4、容器命令4.1 查看容器4.2 创建容器 实例 写在前面 ​ 前面讲到了docker环境的安装&#xff0c;这是我们可以直接打开远程连接华为云云耀云服务器L实例&#xff0c;直接连接公网…...

RJ45网络信号浪涌保护器解决方案

RJ45网络信号浪涌保护器是一种用于保护网络设备免受雷击或其他高压电流干扰的装置&#xff0c;它可以有效地吸收和释放信号线路上的过电压&#xff0c;从而避免设备损坏或数据丢失。 RJ45信号浪涌保护器的应用领域和施工方案如下&#xff1a; 地凯科技RJ45网络信号浪涌保护器…...

SoC性能指标ARM内核运算能力

自动驾驶芯片常用的性能评价指标:TOPS,DMIPS,GFLOPS分别说的是啥&#xff1f; TOPS Tera Operation Per Second&#xff0c;表示每秒钟可以进行的操作数量&#xff0c;用于衡量自动驾驶的算力。 众所周知&#xff0c;汽车上最常用的传感器是摄像头&#xff0c;而与之对应的计…...

注册小鲸鱼88888专用网站

点击注册充值即可 高效不限速&#xff0c;不限设备 注意这里的地址并没有错&#xff0c;只是你需要想办法正确能进入就行&#xff0c;懂的大佬一定知道用一定的方法访问的。...

GitHub平台 Bookget操作

以bookget为例&#xff0c;熟悉github平台。 https://github.com/deweizhu/bookget 选择该界面中的“Wiki”&#xff0c;右侧边栏中是文章的结构大纲。 下载bookget软件。 依照说明&#xff0c;安装bookget环境。...

Ag-grid实现列拖拽,将列顺序存储到本地(localStorage),加载页面时根据本地保存的顺序修改列表头顺序,避免刷新页面后列顺序恢复原样

Ag-grid实现列拖拽&#xff0c;将列顺序存储到本地(localStorage)&#xff0c;加载页面时根据本地保存的顺序修改列表头顺序&#xff0c;避免刷新页面后列顺序恢复原样 今天在使用 ag-grid 的时候&#xff0c;遇到一个需求&#xff0c;ag-grid 列表头的信息拖拽后&#xff0c;…...

常用的linux命令简要说明以及命令全名理解

以下是一些常用的Linux命令及其全名&#xff1a; ls&#xff08;List&#xff09;&#xff1a;列出目录中的文件和子目录。cd&#xff08;Change Directory&#xff09;&#xff1a;切换当前工作目录。pwd&#xff08;Print Working Directory&#xff09;&#xff1a;显示当前…...

《Python趣味工具》——自制emoji3

今日目标 在上次&#xff0c;我们绘制了静态的emoji图。并且总结了turtle中的常用函数。 本次我们将尝试制作一个动态的emoji&#xff0c;让你的表情包动起来&#xff01; 文章目录 一、动画原理&#xff1a;二、制作动画&#xff1a;1. 修改eyes_black()函数&#xff1a;2. 绘…...

怎么把录音转换成mp3格式

怎么把录音转换成mp3格式&#xff1f;在我们平时的学习和工作中&#xff0c;经常会使用设备进行录音&#xff08;例如电脑、手机和录音笔等&#xff09;。然而&#xff0c;这些录音文件往往存在各种不同的格式&#xff0c;不同手机不同品牌的录音笔得到的录音文件都不相同&…...

基于遗传算法改进的BP神经网络图像分割,BP神经网络基本原理,遗传算法流程,

目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 遗传算法的原理及步骤 基于遗传算法改进BP神经网络的二分类 代码 效果图 结果分析 展望 完整代码和数据下载:遗传算法优化BP神经网络的图像分…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...