在 Mybatis 中,可以使用 <foreach>
標(biāo)簽來(lái)實(shí)現(xiàn)批處理操作。以下是一個(gè)示例:
首先,在 Mapper XML 文件中定義一個(gè) foreach 標(biāo)簽,如下所示:
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO table_name (column1, column2)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.column1}, #{item.column2})
</foreach>
</insert>
然后在 Java 代碼中調(diào)用該方法,并傳入一個(gè) List 參數(shù),如下所示:
List<MyObject> list = new ArrayList<>();
// 填充 list
try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
MyMapper mapper = sqlSession.getMapper(MyMapper.class);
mapper.batchInsert(list);
sqlSession.commit();
}
在這個(gè)例子中,我們通過(guò) <foreach>
標(biāo)簽將 List 中的對(duì)象批量插入到數(shù)據(jù)庫(kù)中。注意,在調(diào)用batchInsert
方法之前,需要將SqlSession
設(shè)置為ExecutorType.BATCH
,以確保開(kāi)啟批處理模式。
需要注意的是,在使用 foreach 標(biāo)簽進(jìn)行批處理時(shí),要確保數(shù)據(jù)庫(kù)支持批處理操作,否則可能會(huì)造成性能問(wèn)題。