今天,在写一个路由支付接口的时候,突然想起来数据量很大。需要不停的查询数据比对数据。在发现使用JDK8
之后的lambda
表达式,并不能解决这个问题。
因为,是需要对数据进行模糊查询的。于是,就想到了MyBatis
的一级缓存
。使用之后发现Mybatis
的一级缓存竟然失效了。(因为用不到二级缓存,就不需要在配置文件里面配置了)。
Google
了半天,最后在一篇博客里面发现了解决方法。
MyBatis
的一级缓存
是指SqlSession
。一级缓存
的作用域
是一个SqlSession
。MyBatis
默认开启一级缓存
。
在同一个SqlSession
中,执行相同的查询SQL
,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。当执行SQL
时两次查询中间发生了增删改操作,则SqlSession
的缓存清空。
你只需要在你的方法上加上@Transactional
注解就行了。
但是,可能大家会想,因为一个一级缓存
就需要在查询的service
方法上加注解,很费劲。
但是,我需要实现的功能是有CRUD
中的CU
的。所以,也必须加上注解。
即使加上事务注解的话,也没关系啊。因为需要使用到缓存的service
只能是极个别的,如果很多的话,则说明业务设计有问题了。
最后附上博客地址
https://blog.csdn.net/u013887008/article/details/80379938