docs: private QueryMethodCache generateQueryMethodCacheByMethod(EntityInfo entityInfo,Method method){
  
  		Class<?> mapperClass = entityInfo.getMapperClass();
  		Class<?> entityClass = entityInfo.getEntityClass();
  		QueryMethodCache methodCache = new QueryMethodCache();
  		String methodName = mapperClass.getName() + SPLIT_PONIT + method.getName();
  		methodCache.methodName = methodName;
  		methodCache.fieldNames = new String[method.getParameterTypes().length];
  		methodCache.cacheGroupKey = entityClass.getSimpleName() + GROUPKEY_SUFFIX;
  		//
  		methodCache.collectionResult = method.getReturnType() == List.class || method.getReturnType() == Set.class;
  		if(methodCache.collectionResult){			
  			methodCache.groupRalated = true;
  		}else{
  			// count等统计查询
  			methodCache.groupRalated = method.getReturnType().isAnnotationPresent(Table.class) == false;
  		}
  		
  		StringBuilder sb = new StringBuilder(entityClass.getSimpleName()).append(SPLIT_PONIT).append(method.getName());
  		
  		Annotation[][] annotations = method.getParameterAnnotations();
  		
  		for (int i = 0; i < annotations.length; i++) {
  			Annotation[] aa = annotations[i];
  			if(aa.length > 0){
  				String fieldName = null;
  				inner:for (Annotation annotation : aa) {
  					if(annotation.toString().contains(Param.class.getName())){
  						fieldName = ((Param)annotation).value();
  						break inner;
  					}
  				}
  				if(!methodCache.groupRalated && MybatisMapperParser.entityHasProperty(entityClass, fieldName)){					
  					methodCache.fieldNames[i] = fieldName;
  				}
  			}else{
  				if(!methodCache.groupRalated){
  					throw new MybatisHanlerInitException(String.format("unique查询方法[%s] 使用了自动缓存Annotation @Cache,参数必须使用 @Param 绑定属性名称", methodName));
  				}
  			}
  			//
  			sb.append(i == 0 ? ":" : "_").append("%s");
  		}
  		
  		if(!methodCache.groupRalated && methodCache.fieldNames.length == 1 && entityInfo.getIdProperty().equals(methodCache.fieldNames[0])){
  			throw new MybatisHanlerInitException(String.format("按主键查询方法[%s] 使用了自动缓存Annotation @Cache,请使用默认方法[%s]代替", methodName,methodDefine.selectName()));
  			}
  		methodCache.keyPattern = sb.toString();
  		
  		return methodCache;
  	}