在 MyBatis 中执行批量操作有几种方法:
1. 使用 foreach
标签
可以在 SQL 语句中使用 <foreach>
标签执行批量操作。示例如下:
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO my_table (id, name) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.name})
</foreach>
</insert>
这里 list
是传入的 List
,每个元素都包含需要插入的数据。这种方式可以执行批量插入、更新、删除等操作。
2. 使用 BatchExecutor
通过 MyBatis 的 BatchExecutor
接口进行批处理操作,手动将多个 SQL 语句添加到批处理中,然后执行。
SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH);
try {
Mapper mapper = session.getMapper(Mapper.class);
for (YourObject obj : yourObjectList) {
mapper.insert(obj);
}
session.commit();
} finally {
session.close();
}
3. 使用 BatchExecutorType
在 MyBatis 3.5.2 版本引入了 BatchExecutorType
枚举,可以通过设置 ExecutorType
为 BATCH
来执行批处理操作。
Configuration configuration = new Configuration();
configuration.setDefaultExecutorType(ExecutorType.BATCH);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
try (SqlSession session = sqlSessionFactory.openSession()) {
Mapper mapper = session.getMapper(Mapper.class);
for (YourObject obj : yourObjectList) {
mapper.insert(obj);
}
session.commit();
}
这些方法都可以用于执行批量操作,根据实际场景和需求选择合适的方式来进行批量操作。
Was this helpful?
0 / 0