以编程方式设置DataSource的用户名和密码

时间:2015-05-03 22:19:53

标签: java spring datasource

我需要一个数据源传递给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的用户名和密码,这很好。

但是,我需要动态分配这些。如何配置用户名和密码?

1 个答案:

答案 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);