mysqlplus 批量插入_mybatis+mysql批量插入和批量更新、存在及更新
时间: 2023-07-21 14:10:35 浏览: 122
mybatis执行批量更新batch update 的方法(oracle,mysql两种)
对于Mybatis和MySQL的批量插入和批量更新,可以使用以下方法:
1. 批量插入
使用MyBatis的foreach标签,可以很方便地实现批量插入操作。示例如下:
```xml
<insert id="batchInsert" parameterType="java.util.List">
insert into my_table (col1, col2, col3) values
<foreach collection="list" item="item" separator=",">
(#{item.col1}, #{item.col2}, #{item.col3})
</foreach>
</insert>
```
其中,parameterType指定参数类型为List,collection属性指定要插入的List对象,item指定List中的元素,separator指定分隔符。
在Java代码中,调用该方法时,将List对象作为参数传入即可。
2. 批量更新
对于批量更新,可以使用MySQL的replace into语句来实现。示例如下:
```xml
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
replace into my_table (id, col1, col2, col3) values
(#{item.id}, #{item.col1}, #{item.col2}, #{item.col3})
</foreach>
</update>
```
其中,replace into语句会先尝试插入记录,如果记录已存在,则更新记录。参数类型和调用方式与批量插入相同。
3. 存在即更新
如果只想更新已存在的记录,可以使用MySQL的on duplicate key update语句。示例如下:
```xml
<update id="updateIfExists" parameterType="com.example.MyEntity">
insert into my_table (id, col1, col2, col3) values
(#{id}, #{col1}, #{col2}, #{col3})
on duplicate key update
col1 = values(col1), col2 = values(col2), col3 = values(col3)
</update>
```
其中,id字段为主键。如果该记录已存在,则更新col1、col2、col3字段;否则插入新记录。参数类型为MyEntity,调用方式为传入一个MyEntity对象。
阅读全文