Java代码中的Spring JDBC模板

时间:2016-02-16 04:58:35

标签: java spring jdbc

我正在处理一个项目,我们正在使用在bean中声明的spring jdbc模板对象。我想创建一个jdbc模板对象来连接到另一个数据库并在一些处理后关闭该连接。我需要jdbc模板对象,因为DAO中的所有方法都将jdbc模板作为参数来执行数据库操作。 我无法在spring bean中声明另一个db连接,因为每当调用该服务时,我只需要连接到第二个db进行一次处理。因此,我必须在java代码中设置jdbc模板连接,并将该对象发送到DAO方法,以便对另一个DB执行某些处理。

请帮助我使用在java代码中创建jdbc模板对象所需的代码,这样我只有在调用我的服务时才能连接到db,然后关闭连接。

2 个答案:

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

希望这会有所帮助。