mybatis之update返回响应条数/受影响行数(如果更新数据与原数据一致则返回0)
需求:笔者最近有一个需求是这样的,每个机柜每1分钟都会发一个心跳包,这个心跳包的数据如果和mysql数据库存在的数据一样,那么就不要更新了,直接给我返回一个0,我会根据这个0判断要不要存入这个心跳日志.也就是说.如果你这个表更新了,那么我就在另外一个表插入一个记录(异常记录).
问题:(这里指的是一条更新,非批量更新)mysql的更新如果相同,那么确实是返回一个0的,但是mybatis不知道为何总是返回一个1
过程:笔者查阅了资料,了解如下:
1:不同的数据库,update的机制是不一样的.但是针对标准SQL,不涉及具体数据库去更新一条数据,肯定是会操作一条记录,那么它会返回的是操作记录数,这个肯定是1.但是如果是受影响行数或者响应条数那么就是0了
2:使用mbatis更新数据时如果更新的数据相同,会返回1 ,在使用navicat客户端时,如果数据相同,返回值为0
3:Found MySQL specific workaround. If someone is curious - useAffectedRows option for jdbc url, e.g.
解释:useAffectedRows的含义 :是否用受影响的行数替代查找到的行数来返回数据,也就是查找到了 但却不一定真正修改了
JDBC默认返回的是符合的行数Rows matched, 如果想返回修改过( Changed)的行数 ,需要使用useAffectedRows参数
也就是配置jdbc连接:jdbc:mysql://${jdbc.host}/${jdbc.db}?useAffectedRows=true
解决:jdbc.url=jdbc:mysql://localhost:xxxx/mlfdb_test?characterEncoding=utf8&useAffectedRows=true
扩展部分:其它配置参数
UsePerformanceMonitor,userperfmon, perfmon:是否启用性能监视,默认 false
IgnorePrepare: 是否忽略 Prepare() 调用,默认 true
UseProcedureBodies,procedure bodies:是否检查存储过程体、参数的有效性,默认 true
AutoEnlist: 是否自动使用活动的连接,默认 true
TreatTinyAsBoolean:是否将 TINYINT(1) 列视为布尔型,默认 true
AllowUserVariables:是否允许 SQL 中出现用户变量,默认 false
FunctionsReturnString:所有服务器函数是否按返回字符串处理,默认 false
UseAffectedRows:是否用受影响的行数替代查找到的行数来返回数据,默认 false
Keepalive: 保持 TCP 连接的秒数,默认0,不保持。
ConnectionLifeTime:连接被销毁前在连接池中保持的最少时间(秒)。默认 0
Pooling: 是否使用线程池,默认 true
MinimumPoolSize, min pool size:线程池中允许的最少线程数,默认 0
MaximumPoolSize,max pool size:线程池中允许的最多线程数,默认 100
ConnectionReset:连接过期后是否自动复位,默认 false
CharacterSet, charset:向服务器请求连接所使用的字符集,默认:无
mybatis之update返回响应条数/受影响行数(如果更新数据与原数据一致则返回0)相关推荐
- 执行update语句,返回受影响行数为0的几种情况
首先我们都很清楚执行update语句,返回的结果是受影响的行数这是要先说的, 其次本人遇到执行update语句返回0的情况有两种 1.Update的sql语句中的where条件不成立时,返回结果是0 ...
- mysql受影响的行: 0_mysql执行update语句受影响行数是0
mybatis连接mysql数据库,发现同一个update执行多次,返回的int值都是1. 我记得同样的update再次执行时 受影响行数是0. 后来发现,我之前一直用的SQLyog是这样子的. 原来 ...
- 我纠结的sql返回受影响行数与判断是否成功的问题
比如:deleteSQLWhere="delete TableA where ID in(1,2,3,4,5)"; try{int i = sqlHelper.ExecuteNon ...
- CodeIgniter2.0中sqlserver驱动返回受影响行数问题解决
最近使用CI写项目时遇到的问题,当使用sqlserve链接操作时 修改和删除返回的受影响行数不对 解决办法如下: 找到ci框架目录中include\database\drivers\sqlsrv\sq ...
- SQL返回受影响行数
ExecuteNonQuery()可以返回delete,insert,update操作受影响的行数 如果执行存储过程ExecuteNonQuery()一直返回-1,应检查存储过程中的是否有SET NO ...
- MySQL 修改时返回受影响行数为 0
刚刚在测试接口时,修改一直提示提交失败,很奇怪,之前跟移动端联调接口时,也偶尔会出现这样的问题,sql 确定没问题,怎么就提交失败呢?因为是偶尔出现的情况而且不知道怎么复现,就安慰自己说是可能有什么机 ...
- mysql 受影响行数_关于受影响行数的详细介绍
如何通过SQL聚合函数获得增删改的受影响行数?再做进一步动作前就能够计算出一个查询返回或者影响的行数通常都非常有用,希望分页显示结果或生成统计信息时,这种功能特别方便,那么获取受影响行数的功能是如何实 ...
- sql获取受影响行数、插入标识值
@@ROWCOUNT--受影响行数 @@IDENTITY 和 SCOPE_IDENTITY 可以返回当前会话中的所有表中生成的最后一个标识值.但是,SCOPE_IDENTITY 只在当前作用域内返回值 ...
- ExecuteNonQuery()返回受影响行数不适用select语句
SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数. 对于 UPDATE.INSERT 和 DELETE 语句,返回值为该命令所影响 ...
最新文章
- DB天气app冲刺二阶段第十一天(完结)
- C++标准库与STL简介
- mq日志怎么看_RocketMQ的消息是怎么丢失的
- jQueryh插件imgareaselect
- Java操作HDFS文件
- 像程序员一样思考:如何仅使用JavaScript,HTML和CSS来构建Snake
- 毛玻璃效果 php,CSS3如何实现磨砂玻璃背景效果
- 信用卡-可恶的招商银行,可恶的循环利息
- hadoop 传感器数据_晋城大数据培训
- 4000元性价比主机
- ubuntu mysql下载64位下载_ubuntu mysql下载|
- 数据库、数据源和数据库连接池
- python攻击校园网_python爬虫 模拟登陆校园网-初级
- 微信公众平台开发之定位导航功能
- MATLAB中关于复矩阵的操作,新手易错
- 区域发展(二)集聚程度衡量
- 炸!亚马逊将解散与印度亿万富翁的合资企业;eBay推迟公布2021年Q2财报;TikTok在英国进行测试电商功能…|洞悉跨境
- Linux操作系统概述
- 概论_第8章_假设检验的基本步骤__假设检验的类型
- python strip_关于python中strip方法的理解