我现在故意执行sql报错 测试事物的
我要执行两次添加操作  两次添加同样的数据  报唯一约束的错  然后让他回滚 返回  根据条件返回值这是我想要的效果现在是  发现有异常就回滚 可是由于有异常  方法中的if(res1==res2&&res1==1)
     return 0;    else return -1; 就不执行了现在想让事物可以正常使用,也能根据执行sql的结果进行判断。 对于异常该怎么处理。--------------------------------------------------------------------------------userdao  package com.haitu.dao.impl;import java.sql.SQLException;
import java.util.List;import org.apache.ibatis.session.SqlSession;import com.haitu.model.UserInf;public class UserDao implements com.haitu.dao.UserDaoInf{
   private SqlSession sqlSession ;
   
   public UserDao(SqlSession sqlSession) {
  // TODO Auto-generated constructor stub
    this.sqlSession=sqlSession;
  }
 
  public int addUser(UserInf userInf)  {
     
     int res1= sqlSession.update("UserInf.addUser",userInf);
     int res2= sqlSession.update("UserInf.addUser",userInf);//??????此处执行事物问题   执行两次添加操作  两次添加同样的数据  报唯一约束的错  然后让他回滚
   //由于出现异常下面的判断代码执行不了   if(res1==res2&&res1==1)
     return 0;    else return -1;
  }
  
  public List<UserInf> selectUser() {
   return sqlSession.selectList("UserInf.selectUser");
  }
} ------------------------------------------------------------------spring配置: <?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:context="http://www.springframework.org/schema/context"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/tx 
           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
 
 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations" value="WEB-INF/jdbc.properties"></property>
 </bean>
 
 <!-- 配置数据库 -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
   <property name="driverClass" value="${driverClass}"> </property>
  <property name="jdbcUrl" value="${jdbcUrl}"> </property>
  <property name="user" value="${user}"> </property>
  <property name="password" value="${password}"> </property>
  <property name="maxPoolSize" value="${maxPoolSize}"> </property>
  <property name="minPoolSize" value="${minPoolSize}"> </property>
  <property name="maxIdleTime" value="${maxIdleTime}"> </property>
  <property name="idleConnectionTestPeriod" value="${idleConnectionTestPeriod}"> </property>
 </bean>
 
 
 
 
 
 <!-- 加载 abities
  SqlSessionFactoryBean 这里是与ibatis以前版本区别的地方
  这里不是继承 sprig的FactoryBean 因为spring的版本没有更新 由ibatis jar包自己开发类继承了
  spring的FactoryBean类
  另外 必备属性:dataSource 
   -->
 <bean id="sqlMapClient"
  class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource">
   <ref local="dataSource" />
  </property>
    <property name="configLocation" value="classpath:ibatis.xml"></property>
  </bean>
 
 <!-- 把加载了 配置文件的 sqlMapClient 注入 SqlSessionTemplate模板-->
 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlMapClient" />
    </bean>
    
    <!-- 通过spring 把已经加载ibatis配置文件sqlMapClient bean 注入到 dao类 供
 dao类查询数据 -->
    <bean id="UserDao" class="com.haitu.dao.impl.UserDao">
   <!-- 使用构造器注入 -->
   <constructor-arg ref="sqlSession" />
 </bean>
    
    <!-- pojo -->
 <bean id="UserAction" class="com.haitu.action.UserAction" scope="prototype" >
    <property name="userDao" ref="UserDao"></property>
  </bean>
 <!-- 事务的定义 -->
 <bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource">
   <ref local="dataSource" />
  </property>
 </bean>
 
  <aop:config>
    <aop:pointcut id="daoMethods" expression="execution(public * com.haitu.dao.UserDaoInf.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="daoMethods"/>
   </aop:config>  <tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
    <tx:method  name="*"  rollback-for="Exception"  propagation="REQUIRED"/>
  </tx:attributes>
 </tx:advice>
 
</beans> --------------------------------------------------------------------------------struts2配置: <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.locale" value="zh_CN" />
      <constant name="struts.i18n.encoding" value="UTF-8" />
 
    <package name="default" namespace="/" extends="struts-default">
        <default-action-ref name="index" />
         <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
        
        <!--  将json串作为text返回-->
         <action name="userinf_*" class="UserAction" method="{1}">
             <result  type="stream" name="plain">
                       <param name="contentType">text/html</param>
             <param name="inputName">inputStream</param>
             </result>
         </action>
    </package>
 
     
 </struts>--------------------------------------------------------------------------------ibatis配置:<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"><configuration>   
   <!-- 对应一些POJO类 然后可以在mapper中引用Emp 等就等于引用这个类类型-->
 <typeAliases>
  <typeAlias type="com.haitu.model.UserInf" alias="UserInf" />
  </typeAliases>
   <!-- 加载相关ibatis的映射文件 -->
 <mappers>
  <mapper resource="com/haitu/model/UserInf.xml" />
  </mappers></configuration> --------------------------------------------------------------------------------useraction 中的方法 public String addUserInf()    {
  try {
    inputStream = new StringBufferInputStream(new String("{success: true, msg:\"添加成功\"}".getBytes("utf-8"),"iso-8859-1"));
   } catch (Exception e) {
   // TODO: handle exception
  }
   
       int res=userDao.addUser(userinf);
      System.out.println("----------------"+res);
         return "plain"; }