`
wx1568847608
  • 浏览: 13731 次
文章分类
社区版块
存档分类
最新评论

mysql connector for java update return matched rows

 
阅读更多

一直认为mysql更新操作会返回实际修改数量(affected rows), 但是最近在mybatis项目中发现其返回的是匹配数量(matched rows). 不管什么orm框架其底层都是使用mysql官方提供的驱动jar包实现的与数据库的通讯, 所以我们要研究下关于驱动的文档.

mysql client update(官方客户端返回信息很全,既有matched rows又有affected rows, 这也是之前导致我认为返回affected rows的原因.):

76629d7ff73c5ffcf9ce89447e97a750a36.jpg

datagrip update(基于java驱动实现的GUI客户端, 返回matched rows):

0585c1185db7e2b6956a2173e6ee0c565b3.jpg

mysql client for java code(基于java驱动实现的客户端, 返回matched rows):

4b3fdd514cf9b728ecbc1cd84910da68de9.jpg

通过上面的例子分析发现: 针对更新操作,官方命令行客户端返回信息很详细(matched rows与affected rows都会返回),基于官方提供的java驱动实现的客户端更新操作只返回matched rows. 毕竟实现机制不一样, 下面我们找下官方文档证明下.

java api(dml return rows, ddl return 0, 规范没有详细说明执行返回的rows到底是matched rows还是affected rows, 所以各数据库厂商提供的驱动可以自由返回, 有可能mysql返回matched rows而oracle返回affected rows.)

d3f3ff97183abd1d98c3013e742dda00b0a.jpg

mysql connector for java api (详细描述返回matched rows, 直接原因在这里.)

4f5ea88904e7a082fb673b62e4a96dbf2b7.jpg

能不能使mysql client for java返回affected rows呢? 答案是可以的(建立连接时指定useAffectedRows=true就可以了,但是要注意jdbc版本兼容问题、ON DUPLICATE KEY UPDATE问题).

d62626af501ef61e939cf34f1221c854773.jpg

 

经过以上分析, java api规范没有指定更新操作具体返回matched rows还是affected rows, 这个各数据库厂商可以自由返回. mysql驱动实现明确指定默认返回matched rows, 但是给我们提供的配置参数useAffectedRows.

6f5bb00f7725a7257d0b9cae218582c99c0.jpg

实际开发中是返回matched rows好呢? 还是affected rows好呢? 我感觉还是返回affected rows比较好, 毕竟有的业务场景需要在首次更新时触发、批量更新时需要知道具体更新的数量.

转载于:https://my.oschina.net/u/3994285/blog/2244981

分享到:
评论

相关推荐

    php更新mysql后获取影响的行数发生异常解决方法

    然而,当UPDATE语句更新的字段与原数据相同,即没有实际改变任何值时,`mysql_affected_rows()`函数可能会返回0,这在某些情况下可能会被视为异常或错误。 为了解决这个问题,我们可以参考bdobrica at gmail dot ...

    MYSQL破解ROOT密码

    mysql> update user set password=password('root123') where user='root'; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 ``` 第六步:刷新权限表 在修改密码后,我们需要刷新...

    mysql数据库高级笔记

    mysql> UPDATE account SET balance = balance + 10 WHERE id = 2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> COMMIT; Query OK, 0 rows affected (0.00 sec) ``` 在这...

    oracle的update的五种方式

    例如:`MERGE INTO t_join_situation a USING (SELECT * FROM t_people_info) b ON (a.people_number=b.people_number) WHEN MATCHED THEN UPDATE SET a.join_state=b.join_state WHEN NOT MATCHED THEN INSERT ...

    部署wordpress.txt

    mysql> update user set password = password("wppassword") where User = 'wpuser'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> GRANT ALL PRIVILEGES ON wordpress...

    update语句的优化-oracle .pdf

    WHEN MATCHED THEN UPDATE SET a.customer_type = 'CRM', b.customer_type; ``` 使用merge语句可以避免编写复杂的逻辑判断,并且可以提高处理效率,特别适用于需要根据条件合并多表数据的场景。 4. 快速游标...

    matched_filter.rar_matched_matched filter _matched_filter

    simulink matched filter function

    如何修改Wamp中mysql默认空密码定义.pdf

    Rows matched: 2 Changed: 0 Warnings: 0 ``` 这表明密码更新成功,但并未真正生效,还需要执行下一步操作。 #### 步骤四:刷新权限表 在mysql提示符下执行`FLUSH PRIVILEGES;`命令,以确保新的权限设置生效: `...

    Co-op-Spectrum-Sensing-for-PFA.rar_matched_spectrum sensing_spec

    Co-operative spectrum sensing for matched filter detection

    matched_filter_脉冲压缩_matched_快速卷积_cityfce_雷达_

    在雷达信号处理领域,"matched_filter_脉冲压缩_matched_快速卷积_cityfce_雷达_"这一标题涉及到的核心技术是脉冲压缩(Pulse Compression)和匹配滤波器(Matched Filter),以及快速卷积算法在其中的应用。...

    java字符串匹配

    try to search for the matched name in your university list. If there is a match (or no match) found, print a corresponding message. (Hint: one of solutions is to use java.util.regex API 正则表达式)

    Directly matched antenna

    NXP 的13.56MHZ天线设计指南,Directly matched antenna

    UseMySQL.txt

    Rows matched: 1 Changed: 1 Warnings: 0 ``` 这里将 `rs_dept` 表中 `dept_id` 为 1 的记录中的 `dept_code` 字段更新为 "Hello"。 #### 十、查询数据(Select Data) 使用 `SELECT` 命令可以从表中检索数据。 ...

    update 语句优化update 语句优化update 语句优化

    ### Update语句优化 在数据库操作中,`UPDATE`语句是用于修改现有记录的关键工具之一。对于大型数据库系统来说,优化`UPDATE`语句能够显著提升数据处理速度和效率,减少资源消耗,提高整体性能。本文将通过分析提供...

    Matched filtering.pdf

    纯英文文献,讲述了在数字接收机中的匹配滤波和定时同步,在数字通信系统中,要获取信号,需要在接收端输出有意义的数据之前,对多个信号处理算法进行收敛。这些算法本质上是自适应的,在收敛之前需要处理多个接收...

    Vue路由对象属性 .meta $route.matched详解

    $route.fullPath 1 路由是:/path/:type真正路径是:/path/list 2 path匹配路径: /path/list 3 fullPath匹配路由: /path/:type 路由元信息 .meta const router = new VueRouter({ routes: [ { ...

    mf.zip_MF_matched filter _zip

    Matched filter for denoising

Global site tag (gtag.js) - Google Analytics