在 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 枚举,可以通过设置 ExecutorTypeBATCH 来执行批处理操作。

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

发表回复 0

Your email address will not be published.