一级缓存是什么
是一个hashmap对象,在SQL session中的clearCache方法跳转到DefaultSqlSession中的clearCache方法
@Override
public void clearCache() {
executor.clearLocalCache();
}
Executor接口里面的clearLocalCache方法——>BaseExecutor中的clearLocalCache方法
@Override
public void clearLocalCache() {
if (!closed) {
localCache.clear();
localOutputParameterCache.clear();
}
PerpetualCache类里面的clear方法
@Override
public void clear() {
cache.clear();
}
cache就是一个hashmap(一级缓存)
private Map<Object, Object> cache = new HashMap<>();
一级缓存生成时间
一级缓存是在第一次查询数据库的时候在Executor方法里面的createCacheKey方法生成key值,value保持数据库查询到的数据
CacheKey createCacheKey(MappedStatement ms, Object parameterObject, RowBounds rowBounds, BoundSql boundSql);
具体实现过程看源码