我正在为我的DAO层使用Spring jdbcTemplate。而且我希望在一个查询中执行至少两条sql语句,以便一次命中数据库:
String INSERT_SQL = "INSERT INTO \"ADDRESS\" (id_registred_user, "
+ "address, "
+ "city, "
+ "region, "
+ "country) "
+ "VALUES (?, ?, ?, ?, ?)";
String UPDATE_SQL = "UPDATE \"REGISTRED_USER\" SET id_address = ? "
+ "WHERE id_registred_user = ?";现在,我在@Transactional中做这件事:
jdbcTemplate.update(INSERT_SQL, args...);
jdbcTemplate.update(UPDATE_SQL, args...);我知道在简单的jdbc中有一个addBatch()方法,但是如何使用jdbcTemplate在单个批处理中执行这两个sql语句呢?jdbcTemplate中是否有addBatch()等效项?
提前谢谢。
发布于 2016-11-09 18:26:33
您可以连接这两个查询并添加;作为分隔符,但这不会使这些查询成为“原子”。换句话说,它们不会像你想象的那样立即执行,而是一个接一个地执行,就像你一个接一个地执行两个模板一样--这里没有区别。
为了保证操作原子性,您必须使用事务。事务可以使查询所做的所有更改在事务提交时立即应用。
https://stackoverflow.com/questions/40504655
复制相似问题