开发喵星球

MyBatis 如何执行批量插入?

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

使用 foreach 标签:

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


  INSERT INTO user_table (user_id, user_name) VALUES
  
    (#{user.userId}, #{user.userName})
  

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

void batchInsertUsers(List userList);

使用批量操作的 API:

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

List 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();
}

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

Proudly powered by WordPress