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 的主要代码如下图: 首先检查了jdbc连接是否支持批量更新操作,如果 allowMultiQueries 值为 false ,将被拦截。 然后拼接了SQL语句,拼接代码如下: 直接用分号拼接。 CASE WHEN 示例: UPDATE test SET code = ( CASE WHEN id = 1 THEN 11 WHEN id = 2 THEN 22 WHEN id = 3 THEN 33 END )