周末写了个小功能,有部分指定请求不走mybatis, 而是走其它http数据服务接口,需要判断dao接口方法中的返回值,来进行赋值.
public interface LanguageDao {
/**
* 查询当前配置的语言
* @return
*/
List<LngLanguage> queryLanguageList();
}
代码如下:
public static final ObjectMapper mapper = new ObjectMapper();
public List<?> ArrayListConverter(Method method, String result, Class returnTypeBean) throws Exception{
Type type = method.getGenericReturnType();
//以下方法就是获取list类的泛形类数组的方法
Class<T> entityClass = (Class<T>)((ParameterizedType) type).getActualTypeArguments()[0];
//如果list集合中不属于自定义类,则单独处理
if(entityClass.getClassLoader() == null){
return JSONArray.fromObject(result);
}
return mapper.readValue(result, getCollectionType(ArrayList.class, entityClass));
}
private JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}