今天使用Spring的batchUpdate批量更新的时候,发现它并没有事务处理,这里我写了个方法来做一下事务处理,嘿嘿!
JdbcTemplate jt = (JdbcTemplate) InitSpring.getInstance().contex.getBean("jdbcTemplate");
TransactionTemplate transactionTemplate = (TransactionTemplate) InitSpring.getInstance().contex.getBean("transactionTemplate");
/**
* 事务处理,批量更新List<String> String是SQL语句
*
* @return
*/
public boolean batchUpdate(final List<String> sqlList) {
try {
transactionTemplate.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
for (String sql : sqlList) {
jt.update(sql);
}
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
Spring的配置文件:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"></property> </bean>
测试类:
System.out.println("SQL语句装载完毕,开始导入向数据库导入数据……");
this.batchUpdate(list);
System.out.println("导入完毕!");