Spring mvc注解方式使用事务回滚
项目名:1ma1ma
jdbc.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}"
p:maxActive="${jdbc.pool-size}"
p:minEvictableIdleTimeMillis="600000" p:timeBetweenEvictionRunsMillis="900000"
p:removeAbandoned="true" p:logAbandoned="true" p:removeAbandonedTimeout="120"
p:maxWait="5000"
/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<context:component-scan base-package="com.yaoma.*">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
servlet-context.xml
<context:component-scan base-package="com.yaoma.*" >
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>
@Transactional
public int delete(String IMGroupID, String userid) throws Exception {
//按照IMGroupID和userid更新对应的Groups表内容
int is_return = Groups_Dao.IsDeleted_Groups(IMGroupID, userid, 0);
if (is_return == 0) {
throw new RuntimeException("is_return is 0;");
}
//去环信上删除对应的数据
String hx_return = HX_Service.delete_group(IMGroupID);
if (hx_return == null) {
throw new RuntimeException("hx_return is null");
}
return Integer.parseInt(hx_return);
}
@Transactional注解标签
因为在运行中,所以使用RuntimeException进行异常抛出,类中不能使用try捕捉异常,直接throws Exception抛出异常
如运行时使用Exception抛出异常,则回滚无效