问题
在Mybatis执行Update语句,会返回一个值,该值到底是受影响的条数还是其他什么?
测试
在数据库中插入一条数据,然后执行更新:
mysql> insert into t_user (id,user_name,age) value (1,'tom',18);
Query OK, 1 row affected
mysql> select * from t_user;
+----+-----------+-----+
| id | user_name | age |
+----+-----------+-----+
| 1 | tom | 18 |
+----+-----------+-----+
1 row in set
mysql> update t_user set age = 18 where id = 1;
Query OK, 0 rows affected
Rows matched: 1 Changed: 0 Warnings: 0
可以看见,在命令行中返回中显示:匹配到一条数据,更新了0条数数据.因为Mysql在更新时,如果发现数据一样,是不会去更新数据的.
然后使用java代码执行同样的update语句,查看返回值.代码如下:
代码和结果
执行结果为1,说明返回的并不是受影响的条数,而是匹配条数.
修改链接配置信息,再次执行:
修改后代码和结果
结论
查看mysql链接配置说明,其中有说过这个配置的作用.其实不管你java用的是什么框架,
update返回值是什么取决于你的链接驱动配置.所以默认情况下,返回的是update匹配到的记录条数
网友评论