先不說那麼多,把Java代碼貼出來吧。java
public static void main(String[] args) throws InterruptedException, IOException { try { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://172.23.88.107:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"); dataSource.setUsername("root"); dataSource.setPassword("zdsoft"); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); int res= jdbcTemplate.update("update student set name='李四',age=12 where id=25"); System.out.println(res); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
咱們知道。在mysql中,若是咱們修改一條數據的原始值和修改後值是一致的,那麼就會返回影響的行數爲0mysql
很好,那麼執行上面java的代碼,理論上就會返回0。可是通過屢次執行、屢次測試,返回的始終是1。這就讓人很不解了,後來翻看了相關資料,原來jdbc默認返回的是匹配的行數(而不是影響的行數)。所以若是咱們想要返回影響的行數,能夠在url鏈接地址裏面加上useAffectedRows=true就能夠了。sql
url:jdbc:mysql://172.23.88.107:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useAffectedRows=true數據庫
ps:其實sqlserver和Oracle就沒有匹配的行數和影響的行數的說法,返回的都是影響的行數,而影響的行數和mysql的匹配行數的值是一致的。因此爲了保證三種數據庫的一致性,通常仍是不建議加useAffectedRows=truesqlserver