阅读量:8
MyBatis 提供了多种方式来实现批量插入操作:
使用
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
是一个包含插入数据的集合。使用
MyBatis
的BatchExecutor
批量执行器:
在 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
是对应表的实体类。使用 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
是对应表的实体类。