将JAVA bean/实体类 中为null的属性值转换成空字符串

使bean中为null的属性转换成空字符串

获得getter方法
方法有分带参数和不带参数,我们知道getter方法是不带参数的
获得getter方法如下

Method m = model.getClass().getMethod("get"+name);

获得setter方法
如果是带参数的setter方法,就应该把参数的类型做封装成一个Class<?>泛型数组传入getMethod方法的第二个参数
例如参数是String类型的setter方法如下

Method m = model.getClass().getMethod("set"+name, new Class[] {String.class});

执行getter方法

String value = (String) m.invoke(model);

执行setter方法

m.invoke(model,new Object[] {new String("new value")});

以上转自https://blog.csdn.net/special_programmer/article/details/79995491
根据这俩东西可以使bean中为null的属性值转换成空字符串

package com.tianwu.common.util;

import com.google.common.collect.Maps;
import org.springframework.cglib.beans.BeanMap;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
public class BeanHelper {
/**
      * @description: 使bean中为null的属性转换成空字符串
      * @param [bean]
      * @return void 
      * @throws 
      * @author TZH
      * @date 2019/5/30 11:24 
      */
    public static <T> void  nullToEmpty(T bean){
    Field[] field = bean.getClass().getDeclaredFields();
        for (int j = 0; j < field.length; j++) {     //遍历所有属性
        String name = field[j].getName();    //获取属性的名字
        //将属性的首字符大写,方便构造get,set方法
        name = name.substring(0, 1).toUpperCase() + name.substring(1);
        String type = field[j].getGenericType().toString();    //获取属性的类型
        if (type.equals("class java.lang.String")) {   //如果type是类类型,则前面包含"class ",后面跟类名
            try {
                Method mGet = bean.getClass().getMethod("get" + name);
                String value = (String) mGet.invoke(bean);    //调用getter方法获取属性值
                if (value == null || "".equals(value)) {
                    Method mSet = bean.getClass().getMethod("set"+name, new Class[] {String.class});
                    mSet.invoke(bean,new Object[] {new String("")});
                }
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
        }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值