批量添加到数据库

mybatis中的这三种批量添加1、逐个insert操作:适用于少量数据插入,每次使用都要调用数据库连接,频繁使用会浪费资源,效率低2、foreach标签:使用foreach可以减少数据库连接的调用,效率比insert高3、batch模式:当数据特别多时效率比foreach标签高.具体怎么实现

在 MyBatis 中,实现三种批量添加的方式如下:

  1. 逐个插入操作:使用单条 SQL 语句插入每一条数据。可以在 Mapper 接口中定义一个插入方法,接受单条数据作为参数。在 Java 代码中循环调用该方法即可实现逐个插入操作。

  2. foreach 标签:使用 foreach 标签遍历集合,动态生成多条 SQL 语句,一次性插入多条数据。使用 foreach 标签需要在 Mapper 接口中定义一个插入方法,接受 List 类型的参数。在 Java 代码中将数据封装成 List,传入该方法即可实现批量插入操作。

例如:

<insert id="batchInsert" parameterType="java.util.List"> insert into user (name, age) values <foreach collection="list" item="item" separator=","> (#{item.name}, #{item.age}) </foreach> </insert>

  1. batch 模式:使用 JDBC 提供的 Batch API 实现批量插入操作。 在 Mapper 接口中定义一个插入方法,接受 List 类型的参数。在 Java 代码中通过创建 PreparedStatement 对象并添加多个参数,最后一次性执行所有的 SQL 语句,从而实现批量插入操作。

例如:

 

public void batchInsert(List<User> userList) { try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) { UserMapper mapper = sqlSession.getMapper(UserMapper.class); for (User user : userList) { mapper.insert(user); } sqlSession.flushStatements(); sqlSession.commit(); } catch (Exception e) { // 异常处理 } }

总的来说,使用 MyBatis 实现批量插入操作的方式有多种,具体方法应根据实际需求和数据量大小选择。

4, MybatisPlus 提供了 insertBatchSomeColum方法批量插入,但是会拼接出非常长的SQL 语句@Transactional(rollbackFor = {Exception.class)).

5.使用 jdbc的批处理提交,但是编程繁琐。这两种批量添加具体怎么实现

  1. MybatisPlus 提供了 insertBatchSomeColumn 方法批量插入,但是会拼接出非常长的 SQL 语句

MybatisPlus 的 insertBatchSomeColumn 方法是在 Mybatis 原生的 foreach 标签上进行封装的。它可以通过传入一个实体列表,批量插入表中的数据。insertBatchSomeColumn 方法还提供了一个参数,可以指定需要插入的列名,从而避免插入表中的所有字段。但是当插入数据非常多时,会拼接出非常长的 SQL 语句,导致效率低下。

例如:

 

复制代码

List<User> userList = new ArrayList<>(); // 添加用户数据到 userList 中 userMapper.insertBatchSomeColumn(userList, "name", "age");

  1. 使用 JDBC 的批处理提交

使用 JDBC 提供的批处理提交可以大大提高插入数据的效率。JDBC 的批处理提交可以将多个 SQL 语句打包在一起,一次性发送给数据库执行。在 Java 代码中只需要编写一个插入 SQL 语句,然后通过 PreparedStatement 对象设置参数,最后使用 executeBatch() 方法一次性执行所有 SQL 语句即可。

例如:

总的来说,MybatisPlus 的 insertBatchSomeColumn 方法适用于插入数据较少的情况,而使用 JDBC 提供的批处理提交可以提高插入数据的效率,适用于插入数据较多的情况。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值