JdbcTemplate提供update()方法进行更新操作,包括:插入、修改、删除。
插入
String sql = "INSERT INTO user (name, age) VALUES (?, ?)";
jdbcTemplate.update(sql, "John", 30);
修改
String sql = "UPDATE user SET name = ? WHERE id = ?";
jdbcTemplate.update(sql, "John", 1);
删除
String sql = "DELETE FROM user WHERE id = ?";
jdbcTemplate.update(sql, 1);
update()方法支持参数绑定,可以防止SQL注入。相比直接使用JDBC, update()方法大大简化了更新操作的代码量。
JdbcTemplate中可以通过setAutoCommit(false)开启事务,然后手动提交commit()或回滚rollback()。
jdbcTemplate.setAutoCommit(false);
try {
jdbcTemplate.update(sql1);
jdbcTemplate.update(sql2);
// ...
jdbcTemplate.commit();
} catch (Exception e) {
jdbcTemplate.rollback();
}
此外,在Spring容器中,也可以使用@Transactional注解开启事务:
@Transactional
public void doSomething() {
jdbcTemplate.update(sql1);
jdbcTemplate.update(sql2);
}
doSomething()方法中的更新操作会被Spring的事务管理器管理,出现异常时会自动回滚。
@Transactional还支持设置propagation、isolation、timeout、readOnly等属性,更加灵活地控制事务。
所以,JdbcTemplate通过update()方法和事务管理,可以方便地执行数据库的插入、更新、删除操作。这也是它对持久层访问提供简单易用的访问方案的原因。