Springboot苍穹外卖实战:四、分页查询(PageHelper实现、日期格式转换)

ops/2024/11/13 13:03:41/

分页查询

使用PageHelper插件实现。其实可以升级为MybatisPlus的。

接口设计

在这里插入图片描述

设计DTO类

com.sky.dto.EmployeePageQueryDTO
已设计好,为EmployeePageQueryDTO;

封装PageResult

com.sky.result.PageResult
com.sky.result.Result
已封装好,为PageResult。Page的方法也有相应实现。

Controller层

com.sky.controller.admin.EmployeeController

注意是GetMapping,且return为Result.success(pageResult);

java">	/*** 员工分页查询* @param employeePageQueryDTO* @return*/@GetMapping("/page")@ApiOperation("员工分页查询")public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO){log.info("员工分页查询,参数为:{}", employeePageQueryDTO);PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);//后续定义return Result.success(pageResult);}

Service层接口

com.sky.service.EmployeeService

java">	/*** 分页查询* @param employeePageQueryDTO* @return*/PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO);

Service层实现类

com.sky.service.impl.EmployeeServiceImpl

这里PageHelper接收一页多少条数据和当前是第几页。那么mapper方法是如何拿到这两个数据的呢?
实际上PageHelper和Page共享一个线程,数据通过ThreadLocal共享。

java">	/*** 分页查询** @param employeePageQueryDTO* @return*/public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {// select * from employee limit 0,10//开始分页查询PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);//后续定义long total = page.getTotal();List<Employee> records = page.getResult();return new PageResult(total, records);}

mapper

com.sky.mapper.EmployeeMapper

java">	/*** 分页查询* @param employeePageQueryDTO* @return*/Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);

mapper.xml

sky-server/src/main/resources/mapper/EmployeeMapper.xml
注意这里的resultType是com.sky.entity.Employee。是因为mapper方法中的Page实际返回的是Employee。
且用户名用了模糊查询/

java"><select id="pageQuery" resultType="com.sky.entity.Employee">select * from employee<where><if test="name != null and name != ''">and name like concat('%',#{name},'%')</if></where>order by create_time desc</select>

日期格式转换

法一:在实体类属性上加注解

java">//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime updateTime;

不是很推荐该方法是因为,每用到一个实体类,就需要在其属性上加注解。实体类的属性一朵。

法二:扩展SpringMVC的消息转换器

首先在公共类中定义日期格式
com.sky.json.JacksonObjectMapper

java">package com.sky.json;public class JacksonObjectMapper extends ObjectMapper {//.......public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";//.......}
}

然后在WebMvcConfiguration中扩展Spring MVC框架的消息转化器
com.sky.config.WebMvcConfiguration

java">	/*** 扩展Spring MVC框架的消息转化器* @param converters*/protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {log.info("扩展消息转换器...");//创建一个消息转换器对象MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();//需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据converter.setObjectMapper(new JacksonObjectMapper());//将自己的消息转化器加入容器中converters.add(0,converter);}

http://www.ppmy.cn/ops/132976.html

相关文章

车-路-站-网”信息耦合的汽车有序充电

电动汽车作为一种环保、的交通工具&#xff0c;正逐渐成为未来交通的发展趋势。然而&#xff0c;大规模电动汽车的无序充电可能导致电网负荷波动、电压下降等问题&#xff0c;影响电网的安全稳定运行。为了解决这些问题&#xff0c;需要制定有效的电动汽车有序充电策略&#xf…

解题--多数元素

给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1a;3 此算法用…

11 Oracle Golden Gate 高可用解决方案:Golden Gate 助力企业保障业务连续性

文章目录 Oracle Golden Gate 高可用解决方案&#xff1a;Golden Gate 助力企业保障业务连续性一、Oracle Golden Gate基本概念二、设计异地灾备策略2.1 需求分析2.2 网络规划2.3 部署架构 三、实施异地灾备策略3.1 环境准备3.2 配置Golden Gate3.3 验证与测试 四、数据保护策略…

Redis - 渐进式遍历

Redis 使⽤scan命令进⾏渐进式遍历键&#xff0c;进⽽解决直接使⽤keys获取键时可能出现的阻塞问 题。每次scan命令的时间复杂度是O(1)&#xff0c;但是要完整地完成所有键的遍历&#xff0c;需要执⾏多次scan。整 个过程如图2-29所⽰。 图2-29scan命令渐进式遍历 ⾸次scan从0…

鸿蒙系统的发展及开发者机遇

鸿蒙系统&#xff08;HarmonyOS&#xff09;凭借其分布式架构和跨设备协同能力&#xff0c;展现出强大的发展潜力&#xff0c;在智能手机、智能穿戴、车载、家居等行业领域应用日益广泛&#xff0c;已逐渐形成与安卓、iOS 三足鼎立的市场格局。 开发者面临的挑战 1. 技术适应与…

《无线重构世界》射频模组演进

射频前端四大金刚 射频前端由PA、LNA、滤波器、开关“四大金刚” 不同的模块有自己的工艺和性能特点 分层设计 射频前端虽然只由PA、LNA、开关、混频器4个模块构成&#xff0c;但不同模块之间相互连接且相互影响。如果将射频系统当成一个整体来理解&#xff0c;其中的细节和…

Node.js + MongoDB + Vue 3 全栈应用项目开发

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;node.js篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:Node.js MongoDB Vue 3 全栈应用项目开发 在前几篇文章中&#xff0c;我们已经为 Node.j…

B站的视频下载的视频是mkv格式,怎么通过ffimage转化为mp4的格式

使用 ffmpeg 将 MKV 格式转换为 MP4 格式非常简单。ffmpeg 是一款强大的多媒体处理工具&#xff0c;可以高效地进行视频格式转换。以下是具体步骤&#xff1a; 1. 安装 ffmpeg Windows&#xff1a;下载ffmpeg&#xff0c;解压缩后将路径添加到系统环境变量中。macOS&#xff…