咨询JdbcTemplate.query内联函数中Connection的注入方式及创建逻辑
关于JdbcTemplate中connection参数的来源解释
你看到的这个connection变量,是Spring的JdbcTemplate内部帮你创建并传入的,不用你自己声明,具体逻辑是这样的:
- 这段代码调用的是
JdbcTemplate.query的重载方法,第一个参数要求实现PreparedStatementCreator接口。这个接口只有一个抽象方法:PreparedStatement createPreparedStatement(Connection con) throws SQLException; - 你写的
connection -> {...}是Java的Lambda表达式,用来简化这个接口的实现。这里的connection就是对应上面接口方法里的con参数,是方法的形参。 - 当
JdbcTemplate执行这个query方法时,它会从你配置好的数据源(DataSource)里获取一个数据库连接,然后把这个连接作为实参传入你的Lambda表达式中,你就可以直接用这个connection来创建PreparedStatement了。 - 另外,JdbcTemplate还会帮你处理连接的后续管理:比如查询完成后自动把连接归还到连接池,不用你手动关闭。
内容的提问来源于stack exchange,提问作者CCNA
相关产品推荐
相关产品推荐

