jdbc mysql 批量更新_Mysql学习---Mysql批量更新的三种方式

前言

批量插入由于mysql的VALUES原生支持,使用较为便利。

批量更新的写法一般有三种,在更新数量较少的情况下,前两种性能不相上下。但是在更新字段增加,更新条数较多(500以上)建议使用第三种写法。

常规写法,拼接多个单条更新语句。

CASE...WHEN...写法

JOIN写法

Batch Update

spring/mybatis/JDBI都支持这种批量更新方式。

这种更新方式需要设置jdbc连接的参数:

allowMultiQueries=true

# 完整url举例

jdbc.url=jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true

具体实现以Spring的JdbcTemplate为例。

batchUpdate的主要代码如下图:

05875c7a305a651317b72a9d2fd79817.png

首先检查了jdbc连接是否支持批量更新操作,如果allowMultiQueries值为false,将被拦截。

然后拼接了SQL语句,拼接代码如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDBC提供了批量操作的支持,可以通过一次数据库连接,执行多个相似的数据库操作,从而提高数据库操作的效率。下面是JDBC批量操作的示例代码: 1. 批量插入数据: ```java Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); String sql = "INSERT INTO student (name, age, gender) VALUES ('Tom', 18, 'M')"; stmt.addBatch(sql); sql = "INSERT INTO student (name, age, gender) VALUES ('Lucy', 20, 'F')"; stmt.addBatch(sql); sql = "INSERT INTO student (name, age, gender) VALUES ('Jack', 19, 'M')"; stmt.addBatch(sql); int[] result = stmt.executeBatch(); // 执行批量插入 ``` 2. 批量更新数据: ```java Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); String sql = "UPDATE student SET age = 20 WHERE gender = 'M'"; stmt.addBatch(sql); sql = "UPDATE student SET age = 22 WHERE gender = 'F'"; stmt.addBatch(sql); int[] result = stmt.executeBatch(); // 执行批量更新 ``` 3. 批量删除数据: ```java Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); String sql = "DELETE FROM student WHERE age < 18"; stmt.addBatch(sql); sql = "DELETE FROM student WHERE age > 22"; stmt.addBatch(sql); int[] result = stmt.executeBatch(); // 执行批量删除 ``` 需要注意的是,批量操作的语句必须是相同的类型,例如,不能混合插入和更新操作。同时,批量操作也可能会受到数据库的限制,例如,数据库有可能限制一次批量操作的数量,需要根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值