在 Mybatis 中,可以使用 <foreach>
标签来实现批处理操作。以下是一个示例:
首先,在 Mapper XML 文件中定义一个 foreach 标签,如下所示:
<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 代码中调用该方法,并传入一个 List 参数,如下所示:
List<MyObject> list = new ArrayList<>();
// 填充 list
try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
MyMapper mapper = sqlSession.getMapper(MyMapper.class);
mapper.batchInsert(list);
sqlSession.commit();
}
在这个例子中,我们通过 <foreach>
标签将 List 中的对象批量插入到数据库中。注意,在调用batchInsert
方法之前,需要将SqlSession
设置为ExecutorType.BATCH
,以确保开启批处理模式。
需要注意的是,在使用 foreach 标签进行批处理时,要确保数据库支持批处理操作,否则可能会造成性能问题。