
在springboot项目中加上事务才能体现出mybatis的一级缓存,因为加上了事务,用的一直是同一个sqlsession,这时候有缓存的话sql只会执行一次,没加事务sqlsession查一次关一次,每次创建的都是不同的sqlsession,无法缓存,sql会执行两次
加了事务
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@66a5755]
Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@66a5755] from current transaction
不加事务
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7c37f145]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1d858300]
在SpringBoot项目中,MyBatis的一级缓存效果在事务管理下更为明显。因为当开启事务时,同一个SqlSession会贯穿整个事务,从而能缓存查询结果,减少SQL执行次数。而没有事务的情况下,每次查询都会创建新的SqlSession,导致无法利用缓存,SQL可能执行多次。
1478

被折叠的 条评论
为什么被折叠?



