JdbcTemplate的update()方法用于执行INSERT、UPDATE、DELETE语句,它的返回值是受影响的行数。
例如:
String sql = "UPDATE user SET age = ? WHERE id = ?";
int count = jdbcTemplate.update(sql, 25, 1);
- 执行更新user表将id=1的age字段修改为25
- count会返回1,表示有1行受影响
如果更新的条件匹配不到任何行,count会返回0:
String sql = "UPDATE user SET age = ? WHERE id = ?";
int count = jdbcTemplate.update(sql, 25, 10); // 条件id=10无匹配行
// count返回0
对于插入语句,如果主键由数据库自动生成,count会返回生成的主键值:
String sql = "INSERT INTO user (name) VALUES (?)";
int count = jdbcTemplate.update(sql, "John");
// count返回自动生成主键值,比如1
如果主键不是自动生成,count仍返回受影响行数1:
INSERT INTO user (id, name) VALUES (1, 'John')
String sql = "INSERT INTO user (id, name) VALUES (?, ?)";
int count = jdbcTemplate.update(sql, 1, "John");
// count返回1
所以,update()方法的返回值为:
- 受影响行数:对应更新、删除操作
- 自动生成主键:对应插入操作,当且仅当主键自动生成
- 否则仍返回受影响行数1
这个返回值很有用,它可以判断执行结果,并在插入操作获取自动生成主键。这也避免了再执行查询语句获取主键。