我正在处理一个项目,我们正在使用在bean中声明的spring jdbc模板对象。我想创建一个jdbc模板对象来连接到另一个数据库并在一些处理后关闭该连接。我需要jdbc模板对象,因为DAO中的所有方法都将jdbc模板作为参数来执行数据库操作。 我无法在spring bean中声明另一个db连接,因为每当调用该服务时,我只需要连接到第二个db进行一次处理。因此,我必须在java代码中设置jdbc模板连接,并将该对象发送到DAO方法,以便对另一个DB执行某些处理。
请帮助我使用在java代码中创建jdbc模板对象所需的代码,这样我只有在调用我的服务时才能连接到db,然后关闭连接。
答案 0 :(得分:0)
您的一次访问数据库需要JdbcTemplate
。您可以执行以下代码。每个数据库供应商都有自己特定的Datasource实现,您可以使用它。
表示Derby,org.apache.derby.jdbc.ClientDataSource 对于MySQL,com.mysql.jdbc.jdbc2.optional.MysqlDataSource。
例如mysql数据库
DataSource dataSource = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource();
// Initialize the datasource with host, username, password
JdbcTemplate template = JdbcTemplate(dataSource);
// Use JdbcTemplate to access/modify database
答案 1 :(得分:0)
您可以在上下文配置中定义另一个JdbcTemplate
并在服务方法中自动装配它:
<bean id="myJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="myDatasource" />
</bean>
<bean id="myDatasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
在您的服务类中注入它:
public class MyServiceClassImpl implements MyServiceClass {
@Autowired
@Qualifier("myJdbcTemplate") //if you have other defined JdbcTemplates
private JdbcTemplate myJdbcTemplate;
@Autowired
private MyDao dao;
public void myMethodThatCallsDao(){
dao.callMethod(myJdbcTemplate);
}
}
希望这会有所帮助。