国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

java - Spring +Mybatis 事務(wù) 不能回滾

瀏覽:98日期:2024-01-24 10:18:42

問題描述

配置事務(wù)的文件 spring-mybatis.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' xmlns:p='http://www.springframework.org/schema/p' xmlns:context='http://www.springframework.org/schema/context' xmlns:tx='http://www.springframework.org/schema/tx' xmlns:mvc='http://www.springframework.org/schema/mvc' xsi:schemaLocation='http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd'> <context:component-scan base-package='com.ys.attendance.mapper'/> <bean class='org.springframework.beans.factory.config.PropertyPlaceholderConfigurer'><property name='location' value='classpath:conf/jdbc.properties' /> </bean> <bean destroy-method='close'><property name='driverClassName' value='${driver}' /><property name='url' value='${url}' /><property name='username' value='${username}' /><property name='password' value='${password}' /><!-- 初始化連接大小 --><property name='initialSize' value='${initialSize}'></property><!-- 連接池最大數(shù)量 --><property name='maxActive' value='${maxActive}'></property><!-- 連接池最大空閑 --><property name='maxIdle' value='${maxIdle}'></property><!-- 連接池最小空閑 --><property name='minIdle' value='${minIdle}'></property><!-- 獲取連接最大等待時(shí)間 --><property name='maxWait' value='${maxWait}'></property> </bean> <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean class='org.mybatis.spring.SqlSessionFactoryBean'><property name='dataSource' ref='dataSource' /><property name='configLocation' value='classpath:conf/mybatis/mybatis-config.xml'></property><!-- 自動(dòng)掃描mapping.xml文件 --><property name='mapperLocations' value='classpath:conf/SqlMapper/sqlmap.xml'></property> </bean> <!-- DAO接口所在包名,Spring會(huì)自動(dòng)查找其下的類 --> <bean class='org.mybatis.spring.mapper.MapperScannerConfigurer'><property name='basePackage' value='com.ys.attendance.mapper' /><property name='sqlSessionFactoryBeanName' value='sqlSessionFactory'></property> </bean> <!-- (事務(wù)管理)transaction manager, use JtaTransactionManager for global tx --> <bean class='org.springframework.jdbc.datasource.DataSourceTransactionManager'><property name='dataSource' ref='dataSource' /> </bean><!-- 事務(wù)注解驅(qū)動(dòng),標(biāo)注@Transactional的類和方法將具有事務(wù)性 --> <tx:annotation-driven transaction-manager='transactionManager' proxy-target- /></beans>

在service 中寫了一個(gè)方法 是使用注解 在 這個(gè)service類上加了 @Transactional

@Transactional('transactionManager')@Servicepublic class AttendServiceImpl implements AttendService{@Overridepublic void traincation() { Map<String,String> map1 = new HashMap<String, String>(); map1.put('userid', '1111'); map1.put('username','肖總'); map1.put('date', '2017-03-15'); map1.put('state', '/');Map<String,String> map2 = new HashMap<String, String>(); map2.put('userid', '1131'); map2.put('username','小名'); map2.put('date', '2017-03-15'); map2.put('state', '/'); dao.add_attend_api(map1);try {int i = 1/0;//設(shè)置了一個(gè)異常 } catch (Exception e) {System.out.println(e.getMessage());TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } dao.add_attend_api(map2);}}

執(zhí)行該方法 出現(xiàn)異常 沒有回滾,第一條數(shù)據(jù)插入到了數(shù)據(jù)庫中org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope

是哪里配置有問題么?

問題解答

回答1:

<context:component-scan base-package='com.ys.attendance.mapper'/>

包掃描的范圍太小了吧。你的service在那個(gè)包下。

回答2:

方法申明時(shí)候增加 throws Exception試試

public void traincation throws Exception(){

...

}

回答3:

要把異常拋出去Spring才能捕獲到給你回滾呀把代碼改成這樣:

try { int i = 1/0;//設(shè)置了一個(gè)異常} catch (Exception e) { System.out.println(e.getMessage()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); Throw e;}

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 日本一区深夜影院深a | 亚洲欧美日韩综合久久久久 | 欧洲乱码伦视频免费 | 免费人成在线 | 一区在线免费观看 | 亚洲成色在线 | 大毛片a大毛片 | 国产成人精品一区二区三在线观看 | 成人国产欧美精品一区二区 | 免费看成人频视在线视频 | 亚洲综合99| 久久精品爱国产免费久久 | 成人影院欧美大片免费看 | www日本高清 | 久久久亚洲精品蜜桃臀 | 自拍 亚洲 欧美 | 久久爱www成人 | 黄篇网址| 一个人看的日本免费视频 | 午夜福利国产一级毛片 | 欧美一区二区三区视频在线观看 | a毛片免费全部播放毛 | 男女乱配视频免费观看 | 欧美特级另类xxx | 国产成人99久久亚洲综合精品 | 成人国产精品免费视频不卡 | α片毛片 | 国产精品久久久久免费a∨ 国产精品久久久久免费视频 | 九九精品视频在线播放 | 免费国产成人高清在线看软件 | 亚洲加勒比久久88色综合 | 国产成人精品男人的天堂网站 | 九九精品在线观看 | 欧美一级毛片欧美一级无片 | 欧美在线视频免费 | 国产一级特黄全黄毛片 | 国产操操 | 在线观看的黄网 | 亚洲你我色 | 日本特级视频 | 综合网站 |