​mybatis批量insert的几种方式

   2025-02-13 9150
核心提示:MyBatis 提供了多种方式来实现批量插入操作:使用 foreach 标签:在 Mapper XML 文件中使用 foreach 标签,通过遍历集合来执行批

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

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

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

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言