我需要一个数据源传递到 Spring NamedParameterJdbcTemplate
中,以便我可以对其运行参数化查询。
public void setDataSource(DataSource dataSource)
{
this.dataSource = dataSource;
this.jdbcTemplateObject = new NamedParameterJdbcTemplate(dataSource);
}
Set<Integer> parameters = getSomeIds();
List<TableRow> rows = this.jdbcTemplateObject.query(config.getSql(), parameters, new TableRowMapper());
现在,如果我在 Spring Xml 中设置数据源的用户名和密码,那就没问题了。
但是,我需要动态分配这些。如何配置用户名和密码?
最佳答案
当从数据源获取连接时完成 dataSource.getConnection(username, password)
。但由于 JdbcTemplate 是为您从 DataSource 获取连接的模板,因此您需要将 DataSource 封装在 UserCredentialsDataSourceAdapter
中。 ,并将适配器传递给 JdbcTemplate。
UserCredentialsDataSourceAdapter dsAdapter = new UserCredentialsDataSourceAdapter();
dsAdapter.setTargetDataSource(dataSource);
dsAdapter.setUsername(username);
dsAdapter.setPassword(password);
this.jdbcTemplate = new NamedParameterJdbcTemplate(dsAdapter);
关于java - 以编程方式设置数据源的用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30020072/