mybatis中批量update

本文介绍了一种在数据量巨大时,使用SQL语句进行高效批量更新的方法。通过左连接两个表,可以将一个表的字段值更新到另一个表的对应字段上。文中提供了具体的SQL语句示例,包括使用条件和参数传递的方式。

当数据量多的时候,使用select update 来执行操作

在sql中实现如下

将表t_reconciliation_record中的order_center_no 字段的值 更新到表 t_capital_detail中的order_code字段上

update t_capital_detail c left join t_reconciliation_record r
on c.batch_no=r.batch_no
and c.transaction_serial_no =r.org_order_no
set c.order_code=r.order_center_no
where c.batch_no=201812119007936432

查询结果
select * from t_capital_detail c left join t_reconciliation_record r on c.batch_no=r.batch_no
and c.transaction_serial_no =r.org_order_no where c.batch_no=201812119007936432

另一种方式为
UPDATE table1 a,table2 b
SET a.fee = b.fee
WHERE a.id = b.id

在mybatis中实现只需要将batch_no作为参数传入

MyBatis 中的 Oracle 批量更新(Batch Update)是指通过一次性发送多条 SQL 更新语句到 Oracle 数据库的方式,提高数据处理的效率,减少与数据库的交互次数。在 MyBatis 中,要实现批量更新,你需要做以下几个步骤: 1. **配置事务分隔符**:在 XML 映射文件中,设置 `<insert>` 或 `<update>` 标签的 `useGeneratedKeys="true"` 和 `keyProperty` 属性,这样 MyBatis 知道哪些操作是需要回滚的,并启用批次处理。 ```xml <update id="batchUpdate" parameterType="java.util.List"> <set> <!-- 更新字段 --> </set> FROM your_table WHERE some_condition </update> ``` 同时,在事务开始之前调用 `session.getConfiguration().setAutoCommit(false)` 来关闭自动提交。 2. **创建一个 List 对象**:收集要更新的数据,每个元素是一个 Map,其中键值对对应 SQL 的占位符。 ```java List<Map<String, Object>> dataList = new ArrayList<>(); dataList.add(new HashMap<>(){{ put("field1", value1); put("field2", value2); }}); // 添加更多数据... ``` 3. **执行批量更新**:使用 `SqlSession` 的 `batch()` 方法执行批处理更新。 ```java try (SqlSession sqlSession = sqlSessionFactory.openSession()) { // 开始事务 sqlSession.startTransaction(); // 执行批量更新 int[] result = sqlSession.update("batchUpdate", dataList); // 提交事务 sqlSession.commit(); } catch (Exception e) { // 回滚事务 sqlSession.rollback(); throw e; } finally { sqlSession.close(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值