MyBatis 动态批量插入sql语句
时间: 2023-07-05 18:37:04 浏览: 219
在 MyBatis 中,可以使用动态 SQL 语句实现动态批量插入。具体步骤如下:
1. 在 Mapper.xml 文件中编写 SQL 语句,使用 foreach 标签包裹要插入的数据,并使用动态 SQL 语句判断是否存在某些字段。
```xml
<insert id="dynamicBatchInsert">
INSERT INTO table_name
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="field1 != null">field1,</if>
<if test="field2 != null">field2,</if>
<if test="field3 != null">field3,</if>
</trim>
VALUES
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="item.field1 != null">#{item.field1},</if>
<if test="item.field2 != null">#{item.field2},</if>
<if test="item.field3 != null">#{item.field3},</if>
</trim>
</foreach>
</insert>
```
2. 在对应的 Mapper 接口中定义方法,传入一个 List 类型的参数,参数中包含要插入的数据。
```java
public interface SomeMapper {
void dynamicBatchInsert(List<SomeEntity> list);
}
```
3. 调用 Mapper 接口中的方法,传入要插入的数据即可。
```java
List<SomeEntity> list = new ArrayList<>();
// 构造要插入的数据
someMapper.dynamicBatchInsert(list);
```
需要注意的是,动态 SQL 语句的拼接需要根据实际情况进行调整,确保生成的 SQL 语句的语法正确。同时,也需要注意 SQL 注入的问题,确保传入的数据不会对 SQL 语句造成安全风险。
阅读全文