在spring采用纯JDBC进行数据库操作:
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- JDBC模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
<!-- 数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
<!--事务模板 -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
</bean>
<!-- jdbc事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
</beans>
测试代码:
package com.spring.jdbc;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionTemplate;
/**
* JDBC编程式事务控制
* @author nk
*
*/
public class JdbcTemplateTest {
public static void main(String[] args) {
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
final JdbcTemplate jdbcTemplate = (JdbcTemplate)factory.getBean("jdbcTemplate");
//不会被回滚
jdbcTemplate.execute("insert into test(name,age) values('Tom2',20)");
TransactionTemplate transactionTemplate = (TransactionTemplate)factory.getBean("transactionTemplate");
//回调方法中的jdbc操作,如果未发生异常则会自动提交,发生异常则会回滚
transactionTemplate.execute(new TransactionCallbackWithoutResult(){
protected void doInTransactionWithoutResult(TransactionStatus status) {
try {
jdbcTemplate.execute("insert into test(name,age) values('Tom',20)");
jdbcTemplate.execute("insert into test(name,ages) values('Tom',20)");
} catch (Exception e) {
status.setRollbackOnly(); //回滚
System.out.println("回滚事务");
}
}
});
}
}
//要获得Connection实例可以采用:
DataSourceUtils.getConnection(jdbcTemplate.getDataSource())