news 2026/6/13 3:31:54

条件分页查询

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
条件分页查询

controller:

@DataTimeFormat是指定前端穿过来的日期形式

@GetMapping public Result page(@RequestParam(defaultValue = "1") Integer page, @RequestParam (defaultValue = "10") Integer pageSize, String name, Integer gender, //日期格式封装到LocalDate需要指定前端传递过来的日期时间格式 @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate begin, @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate end ){ log.info("分页查询:{},{},{},{},{},{}",page,pageSize,name,gender,begin,end); PageResult<Emp> pageResult = empService.page(page,pageSize,name,gender,begin,end); return Result.success(pageResult); }

Service:

@Override public PageResult<Emp> page(Integer page, Integer pageSize,String name, Integer gender, LocalDate begin, LocalDate end) { //设置分页参数(Pagehelper) PageHelper.startPage(page, pageSize); //执行查询 List<Emp> empList = empMapper.list(name,gender,begin, end); //解析查询结果,并封装 Page<Emp> p = (Page<Emp>) empList; return new PageResult<>(p.getTotal(),p.getResult()); }

EmpMapper:

public List<Emp> list(String name, Integer gender, LocalDate begin, LocalDate end);

EmpMapper.xml:#{name}必须在concat里面写,不然会在字符串内识别不出

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.mapper.EmpMapper"> <select id="list" resultType="com.itheima.pojo.Emp"> select e.*,d.name from emp e left join dept d on e.dept_id = d.id where e.name like concat('%',#{name},'%') and e.gender = #{gender} and e.entry_date between #{begin} and #{end} order by e.update_time </select> </mapper>

优化一:

package com.itheima.pojo; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; @Data public class EmpQueryParam { private Integer page = 1; //页码 private Integer pageSize = 10; //每页展示记录数 private String name; //姓名 private Integer gender; //性别 @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate begin; //入职开始时间 @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate end; //入职结束时间 }
@GetMapping public Result page(EmpQueryParam empQueryParam) { log.info("查询请求参数: {}", empQueryParam); PageResult pageResult = empService.page(empQueryParam); return Result.success(pageResult); }
public interface EmpService { /** * 分页查询 */ //PageResult page(Integer page, Integer pageSize, String name, Integer gender, LocalDate begin, LocalDate end); PageResult page(EmpQueryParam empQueryParam); }
@Service public class EmpServiceImpl implements EmpService { @Autowired private EmpMapper empMapper; /*@Override public PageResult page(Integer page, Integer pageSize, String name, Integer gender, LocalDate begin, LocalDate end) { //1. 设置PageHelper分页参数 PageHelper.startPage(page, pageSize); //2. 执行查询 List<Emp> empList = empMapper.list(name, gender, begin, end); //3. 封装分页结果 Page<Emp> p = (Page<Emp>) empList; return new PageResult(p.getTotal(), p.getResult()); }*/ public PageResult page(EmpQueryParam empQueryParam) { //1. 设置PageHelper分页参数 PageHelper.startPage(empQueryParam.getPage(), empQueryParam.getPageSize()); //2. 执行查询 List<Emp> empList = empMapper.list(empQueryParam); //3. 封装分页结果 Page<Emp> p = (Page<Emp>)empList; return new PageResult(p.getTotal(), p.getResult()); } }
@Mapper public interface EmpMapper { /** * 查询所有的员工及其对应的部门名称 */ // @Select("select e.*, d.name as deptName from emp e left join dept d on e.dept_id = d.id") // public List<Emp> list(String name, Integer gender, LocalDate begin, LocalDate end); /** * 根据查询条件查询员工 */ List<Emp> list(EmpQueryParam empQueryParam); }

EmpMapper.xml中代码无需修改。

动态SQL:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 6:52:42

Vite 项目中 `node_modules/.vite/deps` 文件夹详解

在使用 Vite 构建的项目中&#xff0c;你可能会注意到一个特殊的隐藏文件夹&#xff1a; node_modules/.vite/deps/这个目录是 Vite 的依赖预构建&#xff08;Dependency Pre-Bundling&#xff09;机制的核心产物。它对开发服务器的启动速度、HMR&#xff08;热更新&#xff09…

作者头像 李华
网站建设 2026/6/12 10:26:26

视觉智能的巅峰对决:Nano Banana 的“奢侈”与豆包大模型的“普惠”之选

新钛云服已累计为您分享875篇技术干货全球视觉智能新浪潮—“香蕉风暴”与国内视觉大模型的较量在AI内容生成领域&#xff0c;一场关于“视觉天花板”的竞赛正愈演愈烈。近期&#xff0c;一款以“Nano Banana”为代号的模型以前所未有的姿态迅速在社区崛起&#xff0c;其官方身…

作者头像 李华
网站建设 2026/6/12 17:56:37

FaceFusion镜像内置预训练模型列表及适用场景说明

FaceFusion镜像内置预训练模型解析与应用实践在短视频内容爆炸式增长的今天&#xff0c;AI换脸技术早已从实验室走向大众创作工具。无论是影视特效、老照片修复&#xff0c;还是社交媒体上的趣味视频生成&#xff0c;背后都离不开一套高效、稳定的人脸处理流水线。FaceFusion正…

作者头像 李华
网站建设 2026/6/12 10:35:29

grex如何成为6G协议开发的强力助手?5个实战场景解析

在6G通信协议开发中&#xff0c;你是否曾为编写复杂的正则表达式而头疼&#xff1f;&#x1f914; 面对动态频谱管理、网络切片标识等新型需求&#xff0c;传统的手工编写方式显得力不从心。今天&#xff0c;让我们通过5个具体场景&#xff0c;看看grex这个智能正则表达式生成工…

作者头像 李华
网站建设 2026/6/6 13:51:07

爽爆了,200套简历模板免费下载

前言&#xff1a;简历模板200套免费送&#xff0c;免费简历讨论阅读文本大概需要 2 分钟。很多时候本想有很多机会与更多的同学互助&#xff0c;往往交集不得&#xff0c;简历也算是与大家建立一个连接的方式&#xff0c;200套建立模板免费送&#xff0c;直接下载&#xff0c;随…

作者头像 李华
网站建设 2026/6/7 13:51:25

如何快速掌握React Native Elements:新手完全指南

如何快速掌握React Native Elements&#xff1a;新手完全指南 【免费下载链接】react-native-elements Cross-Platform React Native UI Toolkit 项目地址: https://gitcode.com/gh_mirrors/re/react-native-elements React Native UI组件库是现代移动应用开发的重要工具…

作者头像 李华