MyBatis 执行批量插入通常使用 foreach 标签或者使用批量操作的 API 来实现。

使用 foreach 标签:

在 XML 映射文件中,可以利用 foreach 标签执行批量插入操作,示例如下:

<insert id="batchInsertUsers" parameterType="java.util.List">
  INSERT INTO user_table (user_id, user_name) VALUES
  <foreach collection="list" item="user" separator=",">
    (#{user.userId}, #{user.userName})
  </foreach>
</insert>

在 Java 代码中,将要批量插入的数据封装为 List,然后调用 Mapper 中对应的方法:

void batchInsertUsers(List<User> userList);

使用批量操作的 API:

在 MyBatis 中也提供了批量操作的 API,比如 SqlSessioninsertupdatedelete 方法。示例:

List<User> userList = new ArrayList<>();
// 填充 userList...

try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
    int batchSize = 100; // 指定批量操作的大小
    int batchCount = 0;

    for (User user : userList) {
        sqlSession.insert("insertUser", user);

        batchCount++;
        if (batchCount % batchSize == 0 || batchCount == userList.size()) {
            sqlSession.flushStatements(); // 执行批量操作
        }
    }

    sqlSession.commit();
}

以上方法可以根据实际需求选择合适的方式来进行批量插入操作。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.