​mybatis批量insert的几种方式

avatar
作者
筋斗云
阅读量:8

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!