MySql(SQL)

1. <script> 标签(必看)

  • 作用 :MyBatis 注解中,当 SQL 包含动态标签(如 <foreach><if> 等)时,必须用 <script> 标签包裹,告诉 MyBatis"这是动态 SQL,需要解析内部标签"。
  • 若没有 <script> 标签,MyBatis 会把 <foreach> 当作普通字符串处理,导致 SQL 语法错误。

2.循环遍历 foreach(eg:list)

循环的是List<Long> id

MyBatis 框架中 <foreach> 标签的使用示例 ,用于在 SQL 中循环遍历集合,动态生成批量操作的语法 (比如 IN 条件、批量插入的 values 等)

**<foreach>**是 MyBatis 专为 "遍历集合 / 数组,拼接 SQL 片段" 设计的标签,常用于:

  • 批量查询(如 SELECT * FROM table WHERE id IN (1,2,3));
  • 批量插入(如 INSERT INTO table (id) VALUES (1),(2),(3))。

1.各属性含义

复制代码
<foreach item='item' collection='items' open='(' separator=',' close=')'> #{item}
</foreach>

2. 注意事项

  • collection 要与参数名一致 :如果 Java 传的是 List/Array,且没给参数起别名collection 要写 listarray;如果是 Map,要写 Map 的 key。
  • 防止 SQL 注入 :MyBatis 会自动对 #{item} 做预编译,避免 SQL 注入,不要用 ${item}(直接拼接,有注入风险)。

简单来说,<foreach> 让 MyBatis 能 "循环拼接 SQL",轻松实现批量操作,不用手动写冗长的 INVALUES 片段~

3.条件语句 if

<if test="identity!=null"> ... </if>

test="identity!=null" 是判断条件:当传入的 identity 参数不为 null 时,执行标签内的 SQL 片段;若 identitynull,则跳过该标签,不拼接内部的 SQL。

标签内的内容 where identity=#{identity}

  • 当条件成立时,拼接 WHERE 子句,筛选出 identity 字段值等于参数值的记录(#{identity} 是 MyBatis 的参数占位符,用于接收传入的 identity 值)。
相关推荐
雨辰AI4 分钟前
SpringBoot3 整合达梦 DM9 超详细入门实战|从零搭建可直接上线
数据库·微服务·架构·政务
我是一颗柠檬16 分钟前
【MySQL全面教学】MySQL性能优化实战Day13(2026年)
数据库·后端·sql·mysql·性能优化·database
AI人工智能+电脑小能手34 分钟前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
张彦峰ZYF1 小时前
检索增强生成(RAG)系统的基础:全面深入矢量数据库
数据库·大模型·rag
牧羊狼的狼2 小时前
MySQL 四大索引失效写法 + 业务替代最优解决方案
mysql·索引失效
Elastic 中国社区官方博客2 小时前
我们如何在 Elasticsearch Serverless 上将向量搜索吞吐量提升一倍
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生·serverless
一 乐2 小时前
高校实习信息发布网站|基于Spring Boot的高校实习信息发布网站的设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·高校实习信息发布网站
weelinking2 小时前
【产品】11_实现后端接口——数据在背后如何流动
java·人工智能·python·sql·oracle·json·ai编程
Dxy12393102162 小时前
三种方式避坑:案例 + 解决方法
python·mysql
zgl_200537792 小时前
源代码:跨数据库通用SQL语法解析与标注拆解
大数据·数据库·数据仓库·sql·etl·源代码管理