JAVA 集合Null 初始化_springboot使用mybatis-plus表单更新null值问题通用解决方案

public class BaseModelMethodArgumentResolver implementsHandlerMethodArgumentResolver {

@Overridepublic booleansupportsParameter(MethodParameter methodParameter) {if (methodParameter.hasParameterAnnotation(UpdateRequestBody.class)) {//集合

if(List.class.isAssignableFrom(methodParameter.getParameterType())){

ParameterizedType parameterizedType=(ParameterizedType) methodParameter.getGenericParameterType();

Class clazz= (Class)parameterizedType.getActualTypeArguments()[0];//取出List中的真实对象类型

if(BaseModel.class.isAssignableFrom(clazz)){return true;

}else{return false;

}

}else{//单个对象

if(BaseModel.class.isAssignableFrom(methodParameter.getParameterType())){return true;

}else{return false;

}

}

}return false;

}

@Overridepublic Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throwsException {

String body= "";try{

HttpServletRequest request= nativeWebRequest.getNativeRequest(HttpServletRequest.class);

body=CommonUtil.getBodyString(request);

}catch(Exception e) {

e.printStackTrace();

}if(List.class.isAssignableFrom(methodParameter.getParameterType())){

List resultList= newArrayList();

ParameterizedType parameterizedType=(ParameterizedType) methodParameter.getGenericParameterType();

Class clazz= (Class)parameterizedType.getActualTypeArguments()[0];

List fs =Arrays.asList(clazz.getDeclaredFields());

JSONArray array=JSONArray.parseArray(body);for(Object temp:array) {

JSONObject obj=JSONObject.parseObject(temp.toString());

List updateFieldList = new ArrayList<>();for(String key : obj.keySet()) {for(Field filed : fs) {if(key.toLowerCase().equals(filed.getName().toLowerCase())) {

updateFieldList.add(key.toLowerCase());continue;

}

}

}

obj.put("updateFieldList",updateFieldList);

resultList.add(obj);

}returnJSONArray.parseArray(resultList.toString(),clazz);

}else{

Class clazz=methodParameter.getParameterType();

List updateFieldList = new ArrayList<>();

List fs =Arrays.asList(clazz.getDeclaredFields());

JSONObject obj=JSON.parseObject(body);for(String key : obj.keySet()) {for(Field filed : fs) {if(key.toLowerCase().equals(filed.getName().toLowerCase())) {

updateFieldList.add(key.toLowerCase());continue;

}

}

}

obj.put("updateFieldList",updateFieldList);returnJSON.parseObject(obj.toString(),clazz);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值