将实体类中的null属性置为““或者空值

工具类:

package com.chryl.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflectionUtils {

    /**
     * 将实体类中的String类型属性为null的置为""
     *
     * @param o
     * @return
     */
    public static Object nullifyStrings(Object o) {
        Field[] declaredFields = o.getClass().getDeclaredFields();
        for (Field f : declaredFields) {
            f.setAccessible(true);
            String name = f.getName();
            if ("serialVersionUID".equals(name)) {
                continue;
            }
            //获取属性类型
            Class type = f.getType();
            try {
                //只操作String类型
                if (type.equals(String.class)) {
                    String value = (String) f.get(o);
                    //如果为空
                    if (value == null || value.trim().isEmpty()) {
                        //获取属性的set方法
                        Method method = o.getClass().getMethod("set" + name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase()), type);
//                        f.set(o, null);
                        //将值设为空串
                        method.invoke(o, "");
                    }
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        return o;
    }


    /**
     * 含递归
     * 将实体类中的 String类型或对象 属性为null的置为""或空对象
     *
     * @param o
     * @return
     */
    public static Object nullifyObjectOrStrings(Object o) throws ClassNotFoundException {
        Field[] declaredFields = o.getClass().getDeclaredFields();
        for (Field f : declaredFields) {
            f.setAccessible(true);
            String name = f.getName();
            if ("serialVersionUID".equals(name)) {
                continue;
            }

            //获取属性类型
            Class type = f.getType();
            try {
                //获取属性的set方法
                String setterMethod = "set" + name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase());
                Method method = o.getClass().getMethod(setterMethod, type);
                //只操作String类型
                if (type.equals(String.class)) {
                    String value = (String) f.get(o);
                    //如果为空
                    if (value == null || value.trim().isEmpty()) {
//                        f.set(o, null);
                        //将值设为空串
                        method.invoke(o, "");
                    }
                } else {
                    Class<?> aClass = Class.forName(f.getGenericType().getTypeName());
                    Object createObj = aClass.newInstance();
                    //实体赋值
                    method.invoke(o, createObj);
                    nullifyObjectOrStrings(createObj);
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        return o;
    }
}

测试类:

package com.chryl.test;


import com.chryl.entity.User;
import com.chryl.util.ReflectionUtils;

/**
 * Created By Chryl on 2021-08-11.
 */
public class NullStrTest {
    public static void main(String[] args) throws Exception {

        User user = new User();
        User user1 = (User) ReflectionUtils.nullifyStrings(user);
        System.out.println(user1);

        User user12 = (User) ReflectionUtils.nullifyObjectOrStrings(user);
        System.out.println(user12);


    }

}

先创建需要的实体:

package com.chryl.entity;

import java.io.Serializable;

/**
 * Created By Chryl on 2021-08-11.
 */
public class User implements Serializable {
    private static final long serialVersionUID = 930878416859194735L;

    private String username;
    private String password;
    private String age;
    private ParamsList paramsList;

    public User() {
    }

    public User(String username, String password, String age) {
        this.username = username;
        this.password = password;
        this.age = age;
    }

    public User(String username, String password, String age, ParamsList paramsList) {
        this.username = username;
        this.password = password;
        this.age = age;
        this.paramsList = paramsList;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public ParamsList getParamsList() {
        return paramsList;
    }

    public void setParamsList(ParamsList paramsList) {
        this.paramsList = paramsList;
    }
}
package com.chryl.entity;

/**
 * Created By Chryl on 2021-08-12.
 */
public class ParamsList {
    private String param1;
    private String param2;
    private String param3;
    private String param4;

    public ParamsList() {
    }

    public ParamsList(String param1, String param2, String param3, String param4) {
        this.param1 = param1;
        this.param2 = param2;
        this.param3 = param3;
        this.param4 = param4;
    }

    public String getParam1() {
        return param1;
    }

    public void setParam1(String param1) {
        this.param1 = param1;
    }

    public String getParam2() {
        return param2;
    }

    public void setParam2(String param2) {
        this.param2 = param2;
    }

    public String getParam3() {
        return param3;
    }

    public void setParam3(String param3) {
        this.param3 = param3;
    }

    public String getParam4() {
        return param4;
    }

    public void setParam4(String param4) {
        this.param4 = param4;
    }
}

 


版权声明:本文为qq_41345773原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。