getSqlMapClient().startTransaction();
        getSqlMapClientTemplate().insert(sqlName, obj);
        getSqlMapClient().commitTransaction();
        getSqlMapClient().endTransaction();
无法向数据库插入数据 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>${driver}</value>
</property>
<property name="url">
<value>${URL}</value>
</property>
<property name="username">
<value>${user}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
<property name="defaultAutoCommit">
<value>false</value>
</property>
</bean>数据源配置是不自动提交

解决方案 »

  1.   

    用spring控制ibatis事务就可以
    ibatis自己启动、提交事务是无效的
      

  2.   

    但是我把事务交给spring管理,
    设置数据源不自动提交后
    <property name="defaultAutoCommit">
    <value>false</value>
    </property>
    事务控制在service也无法插入记录,log4j输出sql是执行了的事务没提交
      

  3.   

    只是执行一次insert操作,为什么还要加用事物哦,
      getSqlMapClientTemplate().insert(sqlName, obj);
    是不是有点形式大于内容了
      

  4.   

    请问怎么解决的啊,配置了defaultAutoCommit为false,ibatis就不能提交事务了
    不配置defaultAutoCommit的话,spring事务就不起作用,怎么办啊···
      

  5.   

    我感觉 defaultAutoCommit优先级好像要高一些
    事务交给spring管理
    但是defaultAutoCommit默认true的时候,事务回滚貌似是有问题的
    但是配置了defaultAutoCommit为false 事务可以回滚
      

  6.   

    我用mybatis都没自动提交啊。
    mybatis将你同一个SqlSession上的操作封装到一个事物。
    SqlSession 的commit()。就是提交事务啊。
      

  7.   

    public void deleteMyView(final String vName,final String appid) throws SQLException {
    this.getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
            // 实现回调接口  
            public Object doInSqlMapClient(SqlMapExecutor executor)
                    throws SQLException {
                executor.startBatch(); // 开始批处理  
                executor.delete("deleteColumnInfo_NMB",vName);
                executor.delete("deleteMyView",vName);
                String os=Tools.getOsDBUser(appid);
                executor.delete("createMyView","DROP VIEW "+os+".M_V_"+vName);
                // 执行批处理  
                executor.executeBatch();
                return null;  
            }
        });
    }
      

  8.   

    public void insertTreeCateBatch(final List<TelephoneVo> telephoneList) {
    SqlMapClient sqlMapClient = getSqlMapClient();
    Connection con = null;
    boolean autoCommit = false;
    try {
    con = sqlMapClient.getDataSource().getConnection();
    autoCommit = con.getAutoCommit();
    // false 设置数据源不自动提交
    con.setAutoCommit(false);
    sqlMapClient.setUserConnection(con);
    // 开始批处理
    sqlMapClient.startBatch();
    for (TelephoneVo telephoneVo : telephoneList) {
    sqlMapClient.update("tele_insertTelephone", telephoneVo);
    }
    // 执行批处理
    sqlMapClient.executeBatch();
    } catch (SQLException e) {
    e.printStackTrace();
    } finally {
    try {
    //将数据源提交方式改回来  true 
    con.setAutoCommit(autoCommit);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }