mybatis是线程安全的吗?
一个sqlsesion对应一个connection.这样就容易发生事务的错乱。
比如一个要提交,一个还回滚。结果把人家要回滚的提交了。
修改操作进行中,又来了查询操作。查出来的数据是脏数据。没有控制操作,等修改完再查询的约束。
与spring结合后,每个mapper方法的调用都会创建一个新的sqlsession.这样就不冲突了。sqlsessiontemplate类做了一层代理。
使用spring事务后,表示由spring负责提交和回滚。就绑定sqlsession.这样可以保证方式中所有mapper用的是同一个sqlsession.