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

认识MyBatis 之 MyBatis的动态SQL


前言

本篇介绍MyBatis里如何使用动态SQL,了解如何去简单使用动态标签;如有错误,请在评论区指正,让我们一起交流,共同进步!


文章目录

  • 前言
  • MyBatis - 动态 SQL
    • if标签
    • trim标签
    • where标签
    • update + set 标签
    • delete + foreach 标签
  • 总结

本文开始

MyBatis - 动态 SQL

使用动态SQL的好处:根据不同的条件拼接 SQL 语句,提高了SQL的灵活性;

if标签

  • if标签:判断时使用,满足test中的判断,执行if条件
    格式:< if test=“xxx != null”> < /if >
    -写在.xml文件中
    -test中的是类中属性的值

trim标签

  • trim标签:判断时使用,去除后缀 与 if标签配合使用
    格式:
    属性:prefix: 这个语句前面加前缀,例如 左括号(
    suffix: 这个语句前面加后缀,例如 右括号(
    suffixOverrides:去掉整个语句后缀,例如 末尾的逗号 ,

示例:

<insert id="add4">insert into userinfo<trim prefix="(" suffix=")" suffixOverrides=","><if test="username != null">username,</if><if test="password">password,</if></trim>values<trim prefix="(" suffix=")" suffixOverrides=","><if test="username != null">#{username},</if><if test="password != null">#{password},</if></trim></insert>

where标签

  • where标签:查询时使用,如果有添加条件,就生成where语句;没有就不添加条件,不会生成where语句;
    -可以去掉前缀and (如下示例,在只有第二个条件时,where会自动去掉and)

示例:

 <select id="testWhere" resultType="com.example.demo.model.Userinfo">select * from userinfo <where><if test="id > 0">id=#{id}</if><if test="username != null">and username=#{username}</if></where></select>

update + set 标签

  • update + set标签:修改时使用;
    -会自动去掉最后的后缀逗号,
 <update id="update">update userinfo<set><if test="username != null">username=#{username},</if><if test="password != null">password=#{password}</if></set>where id=#{id}</update>

delete + foreach 标签

  • delete + foreach标签:删除时使用,删除多个就需要遍历删除,这就使用了foreach;
    属性:collection: 为传递过来的集合名称;
    open: 语句前缀;
    close: 语句后缀;
    item: 遍历的每个对象的名称;
    separator: 每次遍历 的 分隔符;
 <delete id="delByIds">delete from userinfowhere id in<foreach collection="lists" open="(" close=")" item="id" separator=",">#{id}</foreach></delete>

总结

✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

http://www.lryc.cn/news/112157.html

相关文章:

  • 【项目 计网2】4.4网络模型 4.5协议 4.6网络通信的过程
  • redis入门3-在java中操作redis
  • 网络安全预警分类流程
  • SpringBoot复习:(20)如何把bean手动注册到容器?
  • VLT:Vision-Language Transformer用于引用的视觉语言转换和查询生成分割
  • 【开源项目--稻草】Day04
  • 【数模】奇异值分解SVD和图形处理
  • mongodb-win32-x86_64-2008plus-ssl-3.6.23-signed.msi
  • 华为Euler系统忘记密码之密码重置
  • Java-多线程-深入理解ConcurrentHashMap
  • 没有配置redis但是报错连接redis失败
  • 剑指 Offer 04. 二维数组中的查找
  • 【工作中问题解决实践 九】Spring中事务传播的问题排查
  • 【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)
  • Devart dbForge Studio for MySQL Crack
  • C++、Java、JavaScript和python几个语句的对比介绍
  • 第20节 R语言医学分析:某保险医疗事故赔偿因素分析
  • 【雕爷学编程】MicroPython动手做(28)——物联网之Yeelight 4
  • 解决K8S集群设置污点后,污点不生效,下发应用的问题
  • 使用$test$plusargs提高RTL验收速度
  • MySQL~mysql基础应用相关题
  • Redis | 哨兵模式
  • MySQL语句性能分析与优化
  • SpringBoot实现数据库读写分离
  • Linux(四)--包软件管理器与Linux上环境部署示例
  • 自监督去噪:Recorrupted-to-Recorrupted原理分析与总结
  • 【css】css实现水平和垂直居中
  • 常见Charles在Windows10抓包乱码问题
  • 汽车维修保养记录查询API:实现车辆健康状况一手掌握
  • 正则表达式学习记录(Python)