code: public static <T> T queryTryCache(Class<? extends BaseEntity> entityClass,String key,long expireSeconds,Callable<T> dataCaller){
  		
  		if(CacheHandler.cacheProvider == null){
  			try {
  				return dataCaller.call();
  			} catch (Exception e) {
  				throw new RuntimeException(e);
  			}
  		}
  		
  		String entityClassName = entityClass.getSimpleName();
  		key = entityClassName + CacheHandler.SPLIT_PONIT + key;
  		T result = CacheHandler.cacheProvider.get(key);
  		if(result == null){
  			try {				
  				result = dataCaller.call();
  				if(result != null){
  					CacheHandler.cacheProvider.set(key, result, expireSeconds);
  					String cacheGroupKey = entityClassName + CacheHandler.GROUPKEY_SUFFIX;
  					CacheHandler.cacheProvider.putGroup(cacheGroupKey, key, expireSeconds);
  				}
  			} catch (Exception e) {
  				throw new RuntimeException(e);
  			}
  		}
  		return result;
  	}
docs: 查询并缓存结果
  @param entityClass 实体类class (用户组装实际的缓存key)
  @param key 缓存的key（和entityClass一起组成真实的缓存key。<br>如entityClass=UserEntity.class,key=findlist，实际的key为：UserEntity.findlist）
  @param expireSeconds 过期时间，单位：秒
  @param dataCaller 缓存不存在数据加载源
  @return