日期:2014-05-19  浏览次数:20661 次

mybatis-spring编程式事务处理BUG
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try {
  userMapper.insertUser(user);
  userMapper.insertUser(user);
}
catch (MyException ex) {
  txManager.rollback(status);
  throw ex;
}
txManager.commit(status);
——————————————————————————————————————————————
userMapper.insertUser(user);有2句,应该是往这个表里插入2条一样的数据,但是为什么只插入了1条啊,不是表主键的问题,表允许插入2条完全一样的数据

------解决方案--------------------
请设置log4j级别为debug
看看执行
userMapper.insertUser(user);
userMapper.insertUser(user);
时的sql语句
就我的理解,很少有直接在代码中嵌入spring的事务管理代码...也就木有什么人回答你了
------解决方案--------------------
为什么要用编程式的事务处理...
spring的注解事务不是很完美吗

至于插数据的问题,你把mybatis的debug信息打开,一般都能找到原因