mybatis 批量更新mysql
时间: 2024-01-13 21:19:34 浏览: 79
在MyBatis中实现批量更新MySQL有几种方式,包括使用case when、foreach成多条SQL、ON DUPLICATE KEY UPDATE和replace into。下面是这几种方式的介绍:
1. 使用case when:
```xml
<update id="batchUpdate" parameterType="java.util.List">
UPDATE table_name
SET column_name = CASE
<foreach collection="list" item="item" separator=" ">
WHEN id = #{item.id} THEN #{item.value}
</foreach>
END
WHERE id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
```
2. foreach成多条SQL:
```xml
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
UPDATE table_name
SET column_name = #{item.value}
WHERE id = #{item.id}
</foreach>
</update>
```
3. ON DUPLICATE KEY UPDATE(仅适用于MySQL):
```xml
<update id="batchUpdate" parameterType="java.util.List">
INSERT INTO table_name (id, column_name)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.value})
</foreach>
ON DUPLICATE KEY UPDATE
column_name = VALUES(column_name)
</update>
```
4. replace into(仅适用于MySQL):
```xml
<update id="batchUpdate" parameterType="java.util.List">
REPLACE INTO table_name (id, column_name)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.value})
</foreach>
</update>
```
这些是在MyBatis中实现批量更新MySQL的几种方式。根据具体的需求和数据库类型,选择适合的方式进行批量更新操作。
阅读全文