news 2026/5/12 15:52:24

spring boot--08

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
spring boot--08

一、<foreach>标签:批量操作神器

1. 核心作用

用于遍历集合,批量生成 SQL 片段,最常见的场景是批量删除(IN语句)、批量插入

2. 批量删除示例

业务场景:员工列表的批量删除

sql

-- 原生SQL delete from emp where id in (1,2,3);
1)Mapper 接口方法

java

运行

// 批量删除方法,接收id列表 public void deleteByIds(List<Integer> ids);
2)XML 映射文件

xml

<delete id="deleteByIds"> delete from emp where id in <foreach collection="ids" item="id" separator="," open="(" close=")"> #{id} </foreach> </delete>

3. 标签属性详解

表格

属性说明
collection要遍历的集合参数名,这里对应接口方法的参数ids
item遍历集合时,每个元素的别名(这里用id代表列表中的单个 ID)
separator元素之间的分隔符,这里用逗号分隔,生成1,2,3
open遍历开始前拼接的片段,这里是(,和IN语句的括号对应
close遍历结束后拼接的片段,这里是),闭合IN语句的括号

二、<sql><include>标签:SQL 片段复用

1. 核心作用

  • <sql>:定义可重复使用的 SQL 片段,避免代码冗余;
  • <include>:通过refid引用定义好的 SQL 片段。

2. 代码示例

1)定义可复用 SQL 片段

xml

<!-- 定义通用的查询字段片段 --> <sql id="commonSelect"> select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time from emp </sql>
2)在多个查询中引用

xml

<!-- 条件查询 --> <select id="list" resultType="com.itheima.pojo.Emp"> <include refid="commonSelect"/> <where> <if test="name != null">name like concat('%', #{name}, '%')</if> <if test="gender != null">and gender = #{gender}</if> <if test="begin != null and end != null">and entrydate between #{begin} and #{end}</if> </where> order by update_time desc </select> <!-- 根据ID查询 --> <select id="getById" resultType="com.itheima.pojo.Emp"> <include refid="commonSelect"/> where id = #{id} </select>

三、注意事项与最佳实践

  1. <foreach>collection参数

    • 如果接口方法的参数是List类型,collection属性值可以写list或直接写参数名(如示例中的ids);
    • 如果是Array数组类型,collection属性值写array或参数名。
  2. 批量删除的性能建议

    • 单次批量删除的数量不宜过大,避免生成过长的IN语句,影响数据库性能;
    • 超大规模批量删除建议分批次执行。
  3. <sql>片段复用

    • 适合复用查询字段、表名等固定 SQL 片段,提升代码可维护性;
    • 片段内避免包含动态 SQL(如<if>),否则可能降低可读性。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 15:51:08

免费开源AI软件.桌面单机版,可移动的AI知识库,察元 AI桌面版:装好之后做什么 五个上手任务带你跑遍察元AI主要功能

装好之后做什么 五个上手任务带你跑遍察元AI主要功能 很多人装好察元AI 桌面单机版之后会卡在 然后呢 这一步。模型也配了&#xff0c;知识库也建了&#xff0c;但产品有哪些值得用的功能、按什么顺序去试&#xff0c;没人告诉你。这一篇给五个具体的上手任务&#xff0c;跑一遍…

作者头像 李华
网站建设 2026/5/12 15:45:27

AI原生多任务学习效能跃迁路径(SITS 2026工业级调参手册)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生多任务学习&#xff1a;SITS 2026多目标优化实战技巧 在 SITS 2026 挑战赛中&#xff0c;AI 原生多任务学习&#xff08;MTL&#xff09;不再仅是共享底层表征的工程权衡&#xff0c;而是以任务语…

作者头像 李华
网站建设 2026/5/12 15:40:26

pydoxtools:基于声明式管道的智能文档处理与AI集成实战

1. 项目概述&#xff1a;一个面向AI时代的文档处理“瑞士军刀” 如果你经常需要处理PDF、Word文档&#xff0c;或者从一堆杂乱的文件里提取表格、关键信息&#xff0c;然后还得喂给ChatGPT、LLaMA这些大模型做分析&#xff0c;那你肯定体会过这种痛苦&#xff1a;找工具、写脚…

作者头像 李华
网站建设 2026/5/12 15:40:25

终极Sketch文本批量替换指南:高效设计工作流完整教程

终极Sketch文本批量替换指南&#xff1a;高效设计工作流完整教程 【免费下载链接】Sketch-Find-And-Replace Sketch plugin to do a find and replace on text within layers 项目地址: https://gitcode.com/gh_mirrors/sk/Sketch-Find-And-Replace Sketch Find And Rep…

作者头像 李华
网站建设 2026/5/12 15:38:07

基于Cloudflare Workers与R2构建Serverless私有Docker镜像仓库

1. 项目概述&#xff1a;在Cloudflare Workers上构建你自己的Docker镜像仓库 如果你正在寻找一个轻量、低成本且免运维的私有Docker镜像仓库方案&#xff0c;那么Cloudflare Workers R2的组合绝对值得你花时间研究。这个名为 cloudflare/serverless-registry 的开源项目&am…

作者头像 李华