/** * 根据namespace查找需要的信息,避免每次反射的耗时操作 * * @param conf * @param statementId * @return * @throws ClassNotFoundException */ private MapperMeta getMapperMeta(Configuration conf, final String statementId) throws ClassNotFoundException { MapperMeta meta = CACHED.get(statementId); if (meta == null) { int pos = statementId.lastIndexOf('.'); String namespace = statementId.substring(0, pos); // mapper类名 String methodName = statementId.substring(pos + 1); Class<?> mapperClass; mapperClass = Class.forName(namespace); synchronized (this) { meta = CACHED.get(statementId); if (meta == null) { meta = buildMapperMeta(conf, namespace, methodName, mapperClass); CACHED.put(statementId, meta); } } } return meta; }