我需要一个数据源传递给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的用户名和密码,这很好。
但是,我需要动态分配这些。如何配置用户名和密码?
答案 0 :(得分:2)
使用dataSource.getConnection(username, password)
从DataSource获取Connection时完成。但是由于JdbcTemplate是为您从DataSource获取连接的人,因此您需要将您的DataSource封装在UserCredentialsDataSourceAdapter
中,并将适配器传递给JdbcTemplate。
UserCredentialsDataSourceAdapter dsAdapter = new UserCredentialsDataSourceAdapter();
dsAdapter.setTargetDataSource(dataSource);
dsAdapter.setUsername(username);
dsAdapter.setPassword(password);
this.jdbcTemplate = new NamedParameterJdbcTemplate(dsAdapter);