java - 使用 Spring JdbcTemplate 进行多个数据库操作

标签 java spring jdbc spring-jdbc

我喜欢 JdbcTemplate 明显的简单性,但对它的工作原理有点困惑。似乎每个操作(query() 或 update())都从数据源获取连接并关闭它。

很漂亮,但是如何在同一个连接中执行多个 SQL 查询?

我可能想按顺序执行多个操作(例如 SELECT,然后是 INSERT,然后是提交),或者我可能想执行嵌套查询(SELECT,然后根据每行的结果执行第二个 SELECT)。

我如何使用 JdbcTemplate 做到这一点。我使用的类(class)是否正确?

最佳答案

how do you perform multiple SQL queries within the same connection?

此处的正确答案是 "use transactions" .如果您开始事务然后使用 JdbcTemplate 执行多个操作,那么每个操作都将在事务范围内,因此可以保证使用相同的连接。

如果您不想参与事务,那么替代方法是在 JdbcTemplate 上使用更原始的操作,例如 execute(ConnectionCallback action),其中您提供一个 ConnectionCallback 实例,它被赋予一个 Connection,然后您可以在其上执行您选择的任何操作。当然,但是这样做你不会在任何实际操作中得到 JdbcTemplate 的帮助。

事务在 Spring 中非常简单,您应该考虑使用它们(参见上面的链接)。

关于java - 使用 Spring JdbcTemplate 进行多个数据库操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564128/

相关文章:

java - 如何在apache ignite缓存配置xml文件中提供多个静态IP

java - Firebase Android 在长按的 ListView 中删除节点键

java - 如何将互联网上的 XML 文件加载到字符串中

java - 如何在 Spring-MVC 中检索 bean?

java - SQLite 数据库中的奇怪编码 : How to retrieve string values with JDBC?

java - hadoop中所有的slave和master需要有相同的用户名吗?

java - 使用 JPA 的 Spring Boot 2 升级无法实例化 [com.zaxxer.hikari.HikariDataSource]

java - Freemarker 配置的 Autowiring 失败

java - JUnit 5 - JDBC 语句测试

java - Mysql流式结果集和jOOQ fetchLazy