當使用了DataSourceTransactionManager后,使用同一個DataSource的JdbcTemplate也在事務中了嗎?
還是使用了從這個dataSourceTransactionManager.getDataSource()的jdbcTemplate才在事務里?不明白。
???/**
?????*?在同一事務中執行,當拋出異常時會自動回滾事務,操作成功后自動提交事務
?????*/
????public?int[]?batchExc(final?List?lists)?{
????????//這個txManager是DataSourceTransactionManager
????????TransactionTemplate?tt?=?new?TransactionTemplate(txManager);
????????return?(int[])?tt.execute(
????????????????new?TransactionCallback()?{
????????????????????public?Object?doInTransaction(TransactionStatus?status)?{
????????????????????????if?(!lists.isEmpty())?{
????????????????????????????log.info("?===?開始事務?===?");
????????????????????????????String[]?sqls?=?new?String[lists.size()?-?1];
????????????????????????????for?(int?i?=?0;?i?<?lists.size();?i++)?{
????????????????????????????????sqls[i]?=?(String)?lists.get(i);
????????????????????????????????log.info(sqls[i]);
????????????????????????????}
????????????????????????????log.info("?===?結束事務?===?");
????????????????????????????//這個jdbcTemplate不用設置DataSource就可以實現在事務中
????????????????????????????return?jdbcTemplate.getJdbcOperations().batchUpdate(sqls);
????????????????????????}?else?{
????????????????????????????return?new?int[0];
????????????????????????}
????????????????????}
????????????????});
????}
繼續跟蹤。。。
Powered by ScribeFire.