利用反射检查对象是否有null或者空字符串成员变量

今天在写mybatis的映射时候考虑到了这么一点,如果前面给我传过来一个空字符串怎么办,我在网上没有查到对应的映射文件怎么写,所以自己写一个util来处理这种情况。(lombok应该能处理这种情况,但是小组成员没有几个用的)。

用成员变量加反射完成get与set操作


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

/**
 * @Author: Peony
 * @Date: 2020/4/27 20:23
 */
public class ObjectBlank {
    /*若传进来的某个值为""或者null,自动赋值为null,如果不这么写就需要在最后	        sql语句判断,
    * 但是那里不会写
    * */
    public static void objectBlank(Object obj) throws Exception {//简单起见直接全加锁
    	synchronized (obj.getClass()) {
    	Class bean = obj.getClass();
        Field[] fs = bean.getDeclaredFields();
        for (int i = 0; i < fs.length; i++) {
			//下面是通过get方法获取值,拼接成getXXX和setXXX方法
            String fieldName = fs[i].getName();
            StringBuilder sb = new StringBuilder(fieldName);
            String firstWord = sb.substring(0,1);
            sb.delete(0,1);
            StringBuilder methodName = sb.insert(0,
                    firstWord.toUpperCase());
            StringBuilder tmpmethodName = new StringBuilder(methodName);
            StringBuilder getName = methodName.insert(0,"get");
            Method getter = bean.getMethod(getName.toString());


            Object ans = getter.invoke(obj);
            if (ans != null && "".equals(ans.toString().trim())) {
            //赋值为null
                StringBuilder setName = tmpmethodName.insert(0,"set");
                String NULL = null;
                //getMethod要传对应的名字和参数,两个都不能少,不然找不到
                //下面这个invoke传多个参数,直接写null会报错
                bean.getMethod(setName.toString(),fs[i].getType()).
                        invoke(obj,NULL);
    	}
        
            }
        }
    }
}

第一次写这种底层东西,不知道会有什么问题。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值