code: public static Class<?> getMapperClass(String msId) {
          if (msId.indexOf(".") == -1) {
              throw new MapperException("当前MappedStatement的id=" + msId + ",不符合MappedStatement的规则!");
          }
          String mapperClassStr = msId.substring(0, msId.lastIndexOf("."));
          //由于一个接口中的每个方法都会进行下面的操作，因此缓存
          Class<?> mapperClass = (Class<?>) CLASS_CACHE.getObject(mapperClassStr);
          if(mapperClass != null){
              return mapperClass;
          }
          ClassLoader[] classLoader = getClassLoaders();
  
          for (ClassLoader cl : classLoader) {
              if (null != cl) {
                  try {
                      mapperClass = Class.forName(mapperClassStr, true, cl);
                      if (mapperClass != null) {
                          break;
                      }
                  } catch (ClassNotFoundException e) {
                      // we'll ignore this until all class loaders fail to locate the class
                  }
              }
          }
          if (mapperClass == null) {
              throw new MapperException("class loaders failed to locate the class " + mapperClassStr);
          }
          CLASS_CACHE.putObject(mapperClassStr, mapperClass);
          return mapperClass;
      }
docs: 根据msId获取接口类
  
  @param msId
  @return