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

Springboot Mybatis条件查询

        在Springboot中通过Mybatis实现条件查询

package com.wzb.ConditionSelectExercise20240923;import com.wzb.Pojo20240923.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.time.LocalDate;
import java.util.List;@Mapper
public interface ConditionEmpMapper {// 条件查询,在实际开发中,常常需要根据不同的条件查询员工的信息// 姓名:要求实现模糊匹配// 性别:要求实现精确匹配// 入职时间:要求进行范围查询// 根据最后修改时间进行排序// SQL语句/* select id, username, password, name, gender, image, job, entrydate, dept_id,create_time, update_timefrom empwhere name like '%张%'and gender = 1and entrydate between '2010-01-01' and '2020-01-01'order by update_time desc;*/// 接口方法实现// 1.
//    @Select("select * from emp " +
//            "where name like '%${name}%' " +   // 注意,使用通配符就不能直接使用#{}进行占位了
//            "and gender = #{gender} " +
//            "and entrydate between #{begin} and #{end} " +
//            "order by update_time desc")
//    public List<Emp> selectEmp(String name, short gender, LocalDate begin, LocalDate end);// 虽然上述方法看似能够实现业务逻辑,但用了${}占位符,会导致SQL注入的问题// 2.使用concat字符串拼接函数解决SQL注入风险@Select("select * from emp " +"where name like concat('%', #{name}, '%') " +   // 使用concat函数实现拼接,可以使用#{}"and gender = #{gender} " +"and entrydate between #{begin} and #{end} " +"order by update_time desc")public List<Emp> selectEmp(String name, short gender, LocalDate begin, LocalDate end);// 特别注意:保证接口中的@Select中的SQL语句的占位符参数名必须和方法中的形参名字相同,不然会出现找不到参数的错误// 在Springboot 1.X的版本,还需要用@Param注解来指定SQL语句中的参数名// 但是在Springboot 2.X以上的版本,只需要保证SQL中的参数和方法中的参数名相同即可// 因为Springboot父工程对compiler编译插件进行了默认的参数parameter配置,在编译时,会生成字节码文件中保留原方法// 形参的名字,所以说需要保证SQL语句中参数名字和方法形参名相同,才能保证#{}可以正确获得方法形参的值}

        Pojo类

package com.wzb.Pojo20240923;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.time.LocalDate;
import java.time.LocalDateTime;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {private Integer id;private String username;private String password;private String name;private Short gender;private String image;private Short job;private LocalDate entrydate;     //LocalDate类型对应数据表中的date类型private Integer deptId;private LocalDateTime createTime;//LocalDateTime类型对应数据表中的datetime类型private LocalDateTime updateTime;
}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络 --- Socket 编程
  • 24.9.23学习笔记
  • 打造以太坊数据监控利器:InfluxDB与Grafana构建Geth可视化分析平台
  • 设计模式之中介者
  • pyqt QGraphicsView 以鼠标为中心进行缩放
  • LTE协议栈学习
  • [创业之路-151] :职能部门/非经营部门 VS 业务部门/经营部门划分与职责
  • 为什么推荐使用英文版LabVIEW
  • 论文阅读:Omni-Kernel Network for Image Restoration
  • ESP32运行轻量级 Web 服务器入门(基于ESP-IDF)
  • 【天怡AI-注册安全分析报告-无验证方式导致安全隐患】
  • 从一个文本文件中挑选出符合条件的内容行
  • 大数据:快速入门Scala+Flink
  • 【word密码】word怎么限制格式,但可以修改文字?
  • 编写webpack插件自动上传sourceMap
  • 【译】JS基础算法脚本:字符串结尾
  • @angular/forms 源码解析之双向绑定
  • 3.7、@ResponseBody 和 @RestController
  • JavaScript 基本功--面试宝典
  • java第三方包学习之lombok
  • jquery ajax学习笔记
  • laravel 用artisan创建自己的模板
  • MYSQL 的 IF 函数
  • Python打包系统简单入门
  • vuex 笔记整理
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 记录:CentOS7.2配置LNMP环境记录
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 温故知新之javascript面向对象
  • 我这样减少了26.5M Java内存!
  • 消息队列系列二(IOT中消息队列的应用)
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • (2)STL算法之元素计数
  • (JS基础)String 类型
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (四)opengl函数加载和错误处理
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)SvelteKit教程:hello world
  • (转)大型网站架构演变和知识体系
  • .dwp和.webpart的区别
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET MVC 验证码
  • .net生成的类,跨工程调用显示注释
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .Net组件程序设计之线程、并发管理(一)
  • ?php echo ?,?php echo Hello world!;?
  • @property python知乎_Python3基础之:property
  • @RequestMapping-占位符映射
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [5] CUDA线程调用与存储器架构
  • [AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现