需求:系统要同时访问数据库A和数据库B
1、authority_applicationContext.xml配置:
<bean id="csdataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:jboss/jdbc/db1</value>
</property>
</bean>
<bean id="csdataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:jboss/jdbc/db2</value>
</property>
</bean>
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<qualifier value="dataSource1"/>
<property name="dataSource" ref="csdataSource" />
</bean>
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<qualifier value="dataSource2"/>
<property name="dataSource" ref="csdataSource2" />
</bean>
2、使用:
@Repository
public class TestDao {
@Autowired()
@Qualifier("dataSource1")
private JdbcTemplate jdbcTemplate1;
@Autowired()
@Qualifier("dataSource2")
private JdbcTemplate jdbcTemplate2;
/**
* 测试方法:用于获取数据源1,即dataSource1中的数据
* @param catalogId
* @return
*/
public List<ScoreBean> getId2(String catalogId) {
String selectSql = "select id from aa where aaID = ?";
return jdbcTemplate1.query(selectSql, new Object[]{catalogId}, new RowMapper<ScoreBean>() {
public ScoreBean mapRow(ResultSet rs, int rowNum) throws SQLException {
ScoreBean scoreBean = new ScoreBean();
scoreBean.setBrandId(rs.getString("id"));
return scoreBean;
}
});
}
/**
* @param catalogId
* @return
*/
public List<ScoreBean> getScoreById(String BB_id) {
String selectSql = "select score from BB WHERE BB_id = ? order by score desc";
return jdbcTemplate2.query(selectSql, new Object[]{BB_id}, new RowMapper<ScoreBean>() {
public ScoreBean mapRow(ResultSet rs, int rowNum) throws SQLException {
ScoreBean scoreBean = new ScoreBean();
scoreBean.setBrandId(rs.getString("score"));
return scoreBean;
}
});
}
/**
* @param keyword
* @return
*/
public List<ScoreBean> getScoreByKey(String key) {
String selectSql = "select score from BB ";
selectSql += String.format(" WHERE key = '%s' ", key)+" order by score desc";
return jdbcTemplate2.query(selectSql, new RowMapper<ScoreBean>() {
public ScoreBean mapRow(ResultSet rs, int rowNum) throws SQLException {
ScoreBean scoreBean = new ScoreBean();
scoreBean.setBrandId(rs.getString("score"));
return scoreBean;
}
});
}
}