当我执行一个语句:
UPDATE t_friend SET friend_list=1930 WHERE accountID=2040
的时候, 我知道受影响的结果肯定是0行. 因为我在linux上测试了, 测试数据如下:
mysql> select friend_list from t_friend where accountID=2040;
+-------------+
| friend_list |
+-------------+
| 1930 |
+-------------+
1 row in set (0.00 sec)mysql> UPDATE t_friend SET friend_list=1930 WHERE accountID=2040;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0上面明确指出: matched: 1 Changed: 0 Warnings: 0
而我所需要的正是 Changed: 0; 而不是 matched: 1 但是现在我发现当我在java代码里使用java.sql.PreparedStatement.executeUpdate
他给我发挥的结果是matched
--------------------------------
以上, 我有什么办法解决吗?
UPDATE t_friend SET friend_list=1930 WHERE accountID=2040
的时候, 我知道受影响的结果肯定是0行. 因为我在linux上测试了, 测试数据如下:
mysql> select friend_list from t_friend where accountID=2040;
+-------------+
| friend_list |
+-------------+
| 1930 |
+-------------+
1 row in set (0.00 sec)mysql> UPDATE t_friend SET friend_list=1930 WHERE accountID=2040;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0上面明确指出: matched: 1 Changed: 0 Warnings: 0
而我所需要的正是 Changed: 0; 而不是 matched: 1 但是现在我发现当我在java代码里使用java.sql.PreparedStatement.executeUpdate
他给我发挥的结果是matched
--------------------------------
以上, 我有什么办法解决吗?
UPDATE t_friend SET friend_list=1930 WHERE accountID=2040 and friend_list<>1930;
mysql> select * from test
-> ;
+------+
| test |
+------+
| iii |
| iii1 |
| iii2 |
| iii3 |
+------+
4 rows in set (0.00 sec)mysql>
mysql>
mysql>
mysql>
mysql> update test set test='iii' where Length(test)>1;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 4 Changed: 3 Warnings: 0
我把这个加上你应该明白了吧. 我要返回的是 Changed: 3
但是java.sql.PreparedStatement.executeUpdate 给我返回的是 matched: 4你明白了吗???
http://mybatis-user.963551.n3.nabble.com/Return-number-of-changed-rows-td3888464.html