JavaBean字段如何防止非空赋值

网友投稿 289 2022-10-01


JavaBean字段如何防止非空赋值

目录javaBean字段防止非空赋值前言1、JavaBean制作2、利用反射实现工具类3、测试判断javabean是否非空,并给前台报出错误信息1、工具类2、catch捕获

JavaBean字段防止非空赋值

前言

工具类制作起因,有时候项目中出一点点错误,在所难免,经常,有些地方的字段是String,但是到了其他地方是Long,Date,Interger,BigDecimal,这个时候每次都需要判断下是否为空,否则就会在New BigDecimal(string)等中转化失败,报空指针。 如果字段很多,简直太恶心了。

这里日期是最恶心心,日期分为Date类型和String类型 转化为Date

举例

if(string!=null){

date.setBigValue(new BigDecimal(string));

}

1、JavaBean制作

1.1、初始JavaBean User

public class User {

/**

* 如果属性类型为基本数据类型,则会有默认值

* 影响正确判断,请特别注意

*/

// private int age;

private Integer age;

private String name;

private String gender;

private BigDecimal bigDecimal;

private Date date ;

private Long longvalue;

private String dateStr ; //注意这里是String类型的日期 例如 2018-12-09 00:00:00

get set……

1.2、被赋值的JavaBean

/**

* 日期 :2018/12/13 上午11:03.

* 类描述:

*/

public class UserNow {

private String nameNow;

private String genderNow;

private Integer ageNow;

private BigDecimal bigDecimalNow ;

private Date dateNow ;

private Long longvalueNow;

private Date dateStrNow ; //注意这里是Date类型

get set……

2、利用反射实现工具类

需要注意的是,下面的日期,在我们通过反射获取到值的时候,它打印出来的是英文日期串,我们需要对他进行一个转化

package com.hlj.IgnoreNullBean;

import org.junit.platform.commons.util.StringUtils;

import java.lang.reflect.Field;

import java.math.BigDecimal;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Locale;

/**

* 日期 :2018/12/13 上午10:55.

* 类描述 防止非空字段,在类似于 new BigDecimal(string))中进行报错

*/

public class JavaBeanUtil {

/**

*

* @param object 原始数据JavaBean

* @param originFieldName 原始数据 字段名字 比如:name

* @param newObject 新复制的JavaBean

* @param newFilldName 新赋值的字段名字 比如 nameNow

* @param dateFormat 如果是date类型的日期,

* 1、传入的是String字符串'2018-12-09' 则需要传入相应Fromat格式 yyyy-MM-dd HH:mm:ss

* 2、如果是标准高的date类型,那么.toString之后是 -> Fri Dec 14 19:00:07 CST 2018, 则设置为null

*/

public static void setFieldValue(Object object,String originFieldName,Object newObject,String newFilldName,String ...dateFormat) {

try {

Field field = object.getClass().getDeclaredField(originFieldName);

field.setAccessible(true);

Field newfield = newObject.getClass().getDeclaredField(newFilldName);

newfield.setAccessible(true);

String newfieldType=newfield.getGenericType().toString();

if (field.get(object) != null && StringUtils.isNotBlank(field.get(object).toString())) {

String value = field.get(object).toString();

System.out.println(value);

switch (newfieldType){

case "class java.lang.Integer":

newfield.set(newObject, Integer.valueOf(value));

break;

case "class java.lang.Long":

newfield.set(newObject, Long.valueOf(value));

break;

case "class java.math.BigDecimal":

newfield.set(newObject, new BigDecimal(Double.valueOf(value)) );

break;

case "class java.util.Date":

Date date = null;

if(dateFormat!=null&&dateFormat.length>0){

date = new SimpleDateFormat(dateFormat[0]).parse(value);

newfield.set(newObject, date);

}else {

date=new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK).parse(value);

}

newfield.set(newObjechttp://t, date);

break;

default:

break;

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

3、测试

doSEvHJzyP

package com.hlj.IgnoreNullBean;

import com.hlj.IgnoreNullBean.data.User;

import com.hlj.IgnoreNullBean.data.UserNow;

import java.math.BigDecimal;

import java.util.Date;

/**

* 日期 :2018/12/13 上午10:54.

* 类描述:

*/

public class TestMain {

public static void main(String[] args) {

User user = new User();

user.setAge(25);

user.setBigDecimal(new BigDecimal(10.21));

user.setDate(new Date());

user.setLongvalue(100L);

user.setDateStr("2018-12-09 00:00:00");

UserNow userNow = new UserNow() ;

JavaBeanUtil.setFieldValue(user,"age",userNow,"ageNow");

System.out.println("ageNow:"+userNow.getAgeNow());

JavaBeanUtil.setFieldValue(user,"bigDecimal",userNow,"bigDecimalNow");

System.out.println("bigDecimalNow:"+userNow.getBigDecimalNow());

JavaBeanUtil.setFieldValue(user,"date",userNow,"dateNow");

System.out.println("dateNow:"+ userNow.getDateNow());

JavaBeanUtil.setFieldValue(user,"longvalue",userNow,"longvalueNow");

System.out.println("longvalueNow:"+userNow.getLongvalueNow());

JavaBeanUtil.setFieldValue(user,"dateStr",userNow,"dateStrNow","yyyy-MM-dd HH:mm:ss");

System.out.println("dateStrNow:"+userNow.getDateStrNow());

}

ageNow:25

bigDecimalNow:10.21000000000000085265128291212022304534912109375

dateNow:Fri Dec 14 19:27:07 CST 2018

longvalueNow:100

dateStrNow:Sun Dec 09 00:00:00 CST 2018

判断javabean是否非空,并给前台报出错误信息

1、工具类

package com.duodian.youhui.admin.utils;

import com.duodian.youhui.admin.Exceptions.AppException;

import com.duodian.youhui.entity.db.taobao.TaobaoWechat;

import java.lang.reflect.Field;

/**

* 日期 :2019/1/24 下午4:30.

* 类描述:判断是否为空 或者是null 工具

*/

public class JudgeNullUtils {

public static boolean isNull(Object object,String ... fieldName){

try {

for (int i = 0; i < fieldName.length; i++) {

Field field = null;

field = object.getClass().getDeclaredField(fieldName[i]);

field.setAccessible(true);//暴力反射,获取获取数据

if(field.get(object)==null){

http:// //返回flase或者直接抛出异常,根据我们的情况而定

throw new AppException(fieldName[i]+"不能为空");

}

}

return true ;

} catch (NoSuchFieldException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

return false ;

}

}

2、catch捕获

@ApiOperation(value = "添加淘宝营销总代理",

notes = "添加淘宝营销总代理",

consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,

produces = MediaType.APPLICATION_jsON_VALUE,

response = ResponseBean.class

)

@ResponseBody

@GetMapping("addEsWechat")

public ResponseBean addEsWechat(TaobaoEsWechat taobaoWechat ){

try {

JudgeNullUtils.isNull(taobaoWechat,"code","status");

return ResponseBean.buildSuccess(taobaoEsWechatService.addTaobaoEsWechat(taobaoWechat));

} catch (AppException e) {

ExceptionLogUtils.log(e, this.getClass());

return ResponseBean.buildFailure(e.getCode(),e.getMessage());

} catch (Exception e) {

ExceptionLogUtils.log(e, this.getClass());

return ResponseBean.buildFailure(e.getMessage());

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kali与编程:如何快速安装Kali Linux安全系统?(kali安装过程)
下一篇:喜报|海泰方圆成功入选中国档案学会单位会员
相关文章

 发表评论

暂时没有评论,来抢沙发吧~