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 值)。
相关推荐
qq_124987075312 分钟前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
倒流时光三十年44 分钟前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
码农小卡拉1 小时前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
怣501 小时前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql
wjhx2 小时前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
冰暮流星2 小时前
javascript之二重循环练习
开发语言·javascript·数据库
万岳科技系统开发2 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
冉冰学姐2 小时前
SSM智慧社区管理系统jby69(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·管理系统·智慧社区·ssm 框架
杨超越luckly2 小时前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
斯普信专业组3 小时前
构建基于MCP的MySQL智能运维平台:从开源服务端到交互式AI助手
运维·mysql·开源·mcp