对象为空时不允许进行属性赋值,java判断实体对象属性为空
目录
给实体对象属性的空值赋默认值给实体类赋默认值通用方法
给实体对象属性的空值赋默认值
私有最终字符串defaultStr=私有最终日期默认日期=新日期();private final BigDecimal默认decimal=new BigDecimal(0);私有最终时间戳默认时间戳=新时间戳(新日期()。getTime());//赋默认值public void setDefaultValue(Object Object){ try { Class clazz=Object。getclass();field[]field=clazz。getdeclaredfields();字符串主键=实体实用程序。获取主键(当前会话()、对象。getclass());for(int I=0;ifields . length I){ Field Field=fields[I];字符串字段名=字段。getname();class field class=field。gettype();字段。设置可访问性(true);//设置访问权限如果(!字段名称。equals(主键)isFieldValueNull(字段名,对象)){ if(field class==integer。class){ field。set(对象,默认十进制。int value());} else if(field class==long。class){ field。set(对象,默认十进制。长值());} else if(field class==float。class){ field。set(对象,默认十进制。double值());} else if(field class==bigdecimal。class){ field。set(对象,默认小数);} else if(field class==date。class){ field。set(对象,默认日期);} else if(field class==string。class){ field。set(object,defaultStr);//设置值} else if(field class==timestamp。class){ field。set(对象,默认时间戳);} } else if(字段名称。equals(主键)isStringFieldValueNull(字段名,对象,字段类)){//MySQL,需要对对主键做特殊处理field.set(object,null);} }}接住(异常e){ e . printstacktrace();系统。出去。println(e . getmessage());} } //判断字段是否为空private boolean isFieldValueNull(字符串字段名,对象对象)抛出class not found exception { boolean is null=false;请尝试{字符串首字母=字段名。子字符串(0,1).toupper case();string getter= get 字段名的首字母。子串(1);方法method=object.getClass().getMethod(getter,new Class[]{ });对象值=方法。invoke(Object,new Object[]{ });if(value==null){ is null=true;} return isNUll} catch(异常e){ return为空;} } //判断主键是否为空值私有布尔值isStringFieldValueNull(字符串字段名,对象对象,类fieldClass)抛出class not found exception { boolean is null=false;请尝试{字符串首字母=字段名。子字符串(0,1).toupper case();string getter= get 字段名的首字母。子串(1);方法method=object.getClass().getMethod(getter,new Class[]{ });对象值=方法。invoke(Object,new Object[]{ });if(value==null){ is null=true;} else { if(field class==String。类字符串实用程序。为空((字符串)值)){ is null=true} } return isNUll} catch(异常e){ return为空;} }
给实体类赋默认值通用方法
包com。clamc。常见。util导入Java。郎。反思。场;导入Java。郎。反思。修饰词;导入Java。数学。bigdecimal导入Java。SQL。日期;导入Java。SQL。时间戳;导入Java。util。ArrayList导入Java。util。列表;/** *杨志伟*使用反射给实体类英语字母表中第十一个字母赋值(默认值)*插入更新会报空异常,为空时不能插入和更新*/public class ObjInvoke { public static Object getObjDefault(Object obj){//得到类对象class obj cla=obj。getclass();field[]fs=对象类别。getdeclaredfields();for(int I=0;长度;I){ Field f=fs[I];//设置些属性是可以访问的布尔is static=修饰符。是静态的(f . get modifiers());如果(是静态的){继续;} //设置些属性是可以访问的f .设置可访问性(真);尝试{ //得到此属性的值object val=f . get(obj);//得到此属性的类型String type=f.getType().toString();如果(类型。结尾为( String )val==null){//给属性设值f.set(obj, );} else if((类型。endswith( int ) type。endswith( Integer ) type。endswith( double ))val==null){ f . set(obj,0);} else if((类型。endswith( Long ) type。endswith( Long ))val==null){ f . set(obj,0L);} else if(类型。结尾为( Date )val==null){ f . set(obj,Date。值( 1970-01-01 );} else if(类型。ends with( Timestamp )val==null){ f . set(obj,Timestamp。值( 1970-01-01 00336000:00 );} else if(类型。结尾为( BigDecimal )val==null){ f . set(obj,new BigDecimal(0));} }捕捉(异常e){ e . printstacktrace();} }返回obj}公共静态列表getObjDefaultList(List obj List){ List List=new ArrayList();for(Object t : obj list){ list。add(getObjDefault(t));}返回列表;}}以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。