MyBatis 提供了多種方式來實現批量插入操作:
使用 foreach
標簽:
在 Mapper XML 文件中使用 foreach
標簽,通過遍歷集合來執行批量插入操作。示例代碼如下:
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO my_table (column1, column2)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2})
</foreach>
</insert>
這里的 list
是一個包含插入數據的集合。
使用 MyBatis
的 BatchExecutor
批量執行器:
在 Java 代碼中使用 BatchExecutor
批量執行器來執行批量插入操作。示例代碼如下:
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
try {
MyMapper mapper = sqlSession.getMapper(MyMapper.class);
for (MyObject obj : list) {
mapper.insert(obj);
}
sqlSession.commit();
} catch (Exception e) {
sqlSession.rollback();
} finally {
sqlSession.close();
}
這里的 list
是一個包含插入數據的集合,MyObject
是對應表的實體類。
使用 JDBC 的批處理:
直接使用 JDBC 的批處理來執行批量插入操作。示例代碼如下:
Connection connection = dataSource.getConnection();
try {
PreparedStatement ps = connection.prepareStatement("INSERT INTO my_table (column1, column2) VALUES (?, ?)");
for (MyObject obj : list) {
ps.setString(1, obj.getColumn1());
ps.setString(2, obj.getColumn2());
ps.addBatch();
}
ps.executeBatch();
connection.commit();
} catch (Exception e) {
connection.rollback();
} finally {
connection.close();
}
這里的 list
是一個包含插入數據的集合,MyObject
是對應表的實體類。