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

条件分页查询

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:

http://www.cnnetsun.cn/news/160679.html

相关文章:

  • 实测GPT Image 1.5,跑分第一的它击败Gemini了吗?
  • docker compose安装gitea
  • gitea和gitlab有什么区别
  • CH579硬件休眠模式节能设计
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)
  • AI智能体 - 资源感知优化模式
  • 当学术焦虑撞上AI时代:一位理工科研究生的论文自救指南——如何用智能工具化解从开题到定稿的“写作围城”
  • Langchain-Chatchat问答系统自动纠错机制探索
  • next-ai-draw-io 用这款AI 画图几十秒就搞定了
  • FaceFusion换脸出现鬼影怎么办?常见问题排查手册
  • 数据安全治理解决方案(附下载)
  • 【虚拟同步机控制建模】分布式电源的虚拟同步控制 + 双环控制(Simulink仿真实现)
  • FaceFusion人脸融合在虚拟快递员形象定制中的创新尝试
  • 12月的财务工作要达到的强度
  • 如何用GVHMR实现精准的3D人体运动恢复?5大核心技术解析
  • TachiyomiJ2K通知系统:5分钟学会智能漫画更新提醒配置
  • 使用lsp-zero.nvim快速配置Neovim的LSP功能
  • Oxigraph 实战手册:构建下一代语义智能应用的核心引擎
  • ESP32与心率监测联动冥想引导
  • QuickLook终极指南:5分钟掌握Windows快速预览神器
  • Java泛型详解(内附代码示例),零基础小白到精通,收藏这篇就够了
  • 刚刚!Science公布2025年度十大突破,第一名来自中国!
  • Web开发者进阶AI Agent:LangChain提示词模板与输出解析器实战
  • FaceFusion镜像内置缓存机制提升重复任务效率
  • 【隐私合规迫在眉睫】:Open-AutoGLM一键启用的5大应急防护机制详解
  • 你敢完全信任AI自动执行吗?Open-AutoGLM用人工确认构建最后一道防火墙
  • Open-AutoGLM遇上PIPL:企业必须掌握的5大合规技术要点
  • Langchain-Chatchat结合RAG技术提升回答质量
  • 用Langchain-Chatchat将PDF、Word转为可问答的知识库
  • Open-AutoGLM上线后售后人力下降75%,这份部署落地 checklist 你必须拥有