mybatis批量插入判空
时间: 2024-08-13 11:01:45 浏览: 86
MyBatis 的批量插入(Batch Insert)功能通常会在处理大量数据时提高性能。如果你想要避免插入空值,可以在 SQL 映射文件(XML 或 XML 结构的 Mapper 文件)中设置条件来检查数据是否为空。例如,在 XML 中可以这样做:
```xml
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO table_name (column1, column2)
<choose>
<when test="item != null">
SELECT * FROM dual WHERE 1=1
<foreach item="item" index="index" collection="list" open="UNION ALL " separator=", " close=";">
WHEN ${index + 1} = #{list.size()} THEN
VALUES (${item.column1}, #{item.column2})
ELSE
VALUES (${item.column1}, #{item.column2})
</foreach>
</when>
<!-- 如果 item 为null,则跳过该条插入 -->
<otherwise>
NULL
</otherwise>
</choose>
</insert>
```
在这个例子中,`test="item != null"` 检查列表元素是否非空,如果是则执行插入操作,否则插入 `NULL`。记得在 Java 配置里配置 `<if>` 条件来开启这个特性,例如:
```java
Map<String, Object> params = new HashMap<>();
params.put("list", yourList);
if (!yourList.isEmpty()) {
// 开启批量插入
sqlSession.insert("batchInsert", params);
}
```