0
点赞
收藏
分享

微信扫一扫

SpringBoot--获得对象属性为空值的属性名的工具类


简介

说明

        本文介绍获得对象的空值属性名的工具类。

        本工具可以获得某个对象中值为空(为null或者空字符串等)的属性名,然后可以用于作为BeanUtils.copyProperties的最后一个参数,不拷贝这些空的属性。

优点

        方便快捷。

相关网址

Spring--BeanUtils忽略空值拷贝--方法/实例_IT利刃出鞘的博客

代码

package com.example.util;

import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;

import java.beans.PropertyDescriptor;
import java.util.HashSet;
import java.util.Set;

public class PropertyUtil {
public static String[] getNullPropertyNames(Object source) {
BeanWrapper src = new BeanWrapperImpl(source);
PropertyDescriptor[] pds = src.getPropertyDescriptors();

Set<String> emptyNames = new HashSet<>();

for (PropertyDescriptor pd : pds) {
//check if value of this property is null then add it to the collection
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null){
emptyNames.add(pd.getName());
}
}

String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
}

用法

package com.example.controller;

import com.example.entity.Blog;
import com.example.entity.User;
import com.example.util.PropertyUtil;
import com.example.vo.BlogRequest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;
import java.util.Arrays;

@RestController
public class HelloController {
@Autowired
private ObjectMapper objectMapper;

@GetMapping("/test")
public String test() {
BlogRequest blogRequest = new BlogRequest();
blogRequest.setId(10L);
blogRequest.setTitle("Java实战");
// blogRequest.setContent("本文介绍获取null的字段名的方法");
blogRequest.setUser(new User());
blogRequest.setCreateTime(LocalDateTime.now());
// blogRequest.setCreateTime(LocalDateTime.now());
blogRequest.setDeletedFlag(0L);

User user = new User();
user.setId(15L);
user.setUserName("Tony");
// user.setNickName("Iron Man");
// user.setStatus(1);

String[] nullPropertyNames = PropertyUtil.getNullPropertyNames(blogRequest);
System.out.println(Arrays.toString(nullPropertyNames));

System.out.println("------------------------------");
Blog blog = new Blog();
BeanUtils.copyProperties(blogRequest, blog, nullPropertyNames);

try {
System.out.println(objectMapper.writeValueAsString(blog));
} catch (JsonProcessingException e) {
e.printStackTrace();
}

return "test success";
}
}

举报

相关推荐

0 条评论