soc*_*a23 27
Connection从DataSource豆中获取.
您可以通过使用Spring依赖注入将其注入到bean中,或者通过ApplicationContext静态访问来访问dataSource :
DataSource ds = (DataSource)ApplicationContextProvider.getApplicationContext().getBean("dataSource");
Connection c = ds.getConnection();
Run Code Online (Sandbox Code Playgroud)
axt*_*avt 17
使用DataSourceUtils.getConnection().
它返回与当前事务关联的连接(如果有).
小智 17
只是一个信息:我正在使用Spring JDBC Template,它为我保存当前的连接对象,可以按如下方式接收.
Connection con;
con = getJdbcTemplate().getDataSource().getConnection();
Run Code Online (Sandbox Code Playgroud)
我不确定这个问题最初发布时是否可用,但是,在最新版本的 Spring 中执行此操作的首选方法似乎是使用JdbcTemplate和PreparedStatementCreator。请参阅https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#query-org.springframework.jdbc.core.PreparedStatementCreator-org.springframework.jdbc .core.PreparedStatementSetter-org.springframework.jdbc.core.ResultSetExtractor-或任何其他query以 aPreparedStatementCreator作为第一个参数的方法:
jdbcTemplate.query(con -> {
// add required logic here
return con.prepareStatement("sql");
}, rs -> {
//process row
});
Run Code Online (Sandbox Code Playgroud)
这比其他提供的答案有优势(DataSourceUtils.getConnection()或者由于未jdbcTemplate.getDataSource().getConnection()分配新连接,它使用与调用任何其他查询方法相同的连接管理。因此,您也无需担心关闭/释放连接,因为 spring 会处理它。jdbcTemplate