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,比如 SqlSession
的 insert
、update
、delete
方法。示例:
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