MyBatis在Spring环境下的事务管理
MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能。第一个问题是偶尔会出现,在实验环境无论如何也重现不了,经过分析MyBatis的逻辑,估计是两个DAO分别拿到了两个不同的Connection,第二个语句比第一个更早的被提交,导致了主键冲突,有待进一步的分析和验证。经过仔细比对这几个项目,发现DAO执行慢的项目的数据源配置中 defaultAutoCommit的配置都是 false。而且将此配置改为 true之后就恢复了正常。由此推断是在MyBatis在执行「非自动提交」语句时,进行等待,或者多提交了一次,导致实际调用数据库API次数增多。