你的问题里“批量”后面没说完,我按最常见的几种 Dynamic SQL 批量场景给你一个通用说明,你可以直接对号入座。
Dynamic SQL = SQL 在运行时拼接 / 生成,而不是写死在代码里。
常见用途:
<insert id="batchInsert">
INSERT INTO user (name, age)
VALUES
<foreach collection="list" item="u" separator=",">
(#{u.name}, #{u.age})
</foreach>
</insert>
<update id="batchUpdate">
<foreach collection="list" item="u" separator=";">
UPDATE user
SET age = #{u.age}
WHERE id = #{u.id}
</foreach>
</update>
⚠️ 需要开启:
allowMultiQueries=true
<select id="query">
SELECT * FROM user
WHERE 1=1
<if test="ids != null">
AND id IN
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</if>
</select>
StringBuilder sql = new StringBuilder("INSERT INTO user VALUES ");
for (User u : list) {
sql.append("('").append(u.getName()).append("'),");
}
⚠️ 容易 SQL 注入,不推荐
SET @sql = 'DELETE FROM log WHERE create_time < ?';
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
你可以直接告诉我:
我可以给你完整可直接用的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。