package com.example.aninbatis.executor;import com.example.aninbatis.config.Configuration;import com.example.aninbatis.config.MappedStatement;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 基本执行器,主要处理一级缓存 */public abstract class BaseExecutor implements Executor { private Map<String, List<Object>> oneLevelCache = new HashMap<>(); @SuppressWarnings("unchecked") @Override public <T> List<T> query(MappedStatement mappedStatement, Configuration configuration, Object param) { // 获取带有值的sql语句 String sql = mappedStatement.getSqlSource().getBoundSql(param).getSql(); // 从一级缓存去根据sql语句获取查询结果 List<Object> result = oneLevelCache.get(sql); if (result != null) { return (List<T>) result; } // 如果没有结果,则调用相应的处理器去处理 result = queryFromDataBase(mappedStatement, configuration, param); oneLevelCache.put(sql, result); return (List<T>) result; } public abstract List<Object> queryFromDataBase(MappedStatement mappedStatement, Configuration configuration, Object param);}