JAVA jdbcTemplate更改数据库,如何创建新的连接,把值赋给jdbcTemplate。

2025-05-09 04:32:11
推荐回答(1个)
回答1:




class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">



net.sourceforge.jtds.jdbc.Driver





jdbc:jtds:sqlserver://127.0.0.1:1433/Sample





test





baidu






class="org.springframework.jdbc.datasource.DataSourceTransactionManager">



























配置中包含了三个节点:

Ø dataSource

这里我们采用了apache dhcp组件提供的DataSource实现,并为其配置了JDBC驱动、数据库URL、用户名和密码等参数。

Ø transactionManager

针对JDBC DataSource类型的数据源,我们选用了DataSourceTransactionManager

作为事务管理组件。

如果需要使用基于容器的数据源(JNDI),我们可以采用如下配置:


class="org.springframework.jndi.JndiObjectFactoryBean">



jdbc/sample






class="org.springframework.transaction.jta.JtaTransactionManager"/>

Ø userDAO

申明了一个UserDAO Bean,并为其指定了dataSource和

transactionManger资源。

UserDAO对应的代码如下:

public class UserDAO {

private DataSource dataSource;

private PlatformTransactionManager transactionManager;

public PlatformTransactionManager getTransactionManager() {

return transactionManager;

}

public void setTransactionManager(PlatformTransactionManager

transactionManager) {

this.transactionManager = transactionManager;

}

public DataSource executeTestSource() {

return dataSource;

}

public void setDataSource(DataSource dataSource) {

this.dataSource = dataSource;

}

public void insertUser() {

TransactionTemplate tt =new TransactionTemplate(getTransactionManager());

tt.execute(new TransactionCallback() {

public Object doInTransaction(TransactionStatus status) {

JdbcTemplate jt = new JdbcTemplate(executeTestSource());

jt.update(

"insert into users (username) values ('xiaxin');");

jt.update(

"insert into users (id,username) values(2,

'erica');");

return null;

}

});

}

}

可以看到,在insertUser方法中,我们引入了一个新的模板类:org.springframework.transaction.support.TransactionTemplate。 TransactionTemplate封装了事务管理的功能,包括异常时的事务回滚,以及操作成功后的事务提交。和JdbcTemplate一样,它使得我们无需在琐碎的try/catch/finally代码中徘徊。

在doInTransaction中进行的操作,如果抛出未捕获异常将被自动回滚,如果成功执行,则将被自动提交。