​mybatis批量insert的几种方式

小亿
270
2023-12-20 21:40:32
栏目: 编程语言

MyBatis 提供了多种方式来实现批量插入操作:

  1. 使用 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 是一个包含插入数据的集合。

  2. 使用 MyBatisBatchExecutor 批量执行器:
    在 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 是对应表的实体类。

  3. 使用 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 是对应表的实体类。

0
看了该问题的人还看了