广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaBean字段如何防止非空赋值
  • 817
分享到

JavaBean字段如何防止非空赋值

2024-04-02 19:04:59 817人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

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

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



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;

public class JavaBeanUtil {
    
    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(newObject, date);
                        break;
                    default:
                        break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3、测试


package com.hlj.IgnoreNullBean;
import com.hlj.IgnoreNullBean.data.User;
import com.hlj.IgnoreNullBean.data.UserNow;
import java.math.BigDecimal;
import java.util.Date;

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;

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){
                    //返回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());
        }
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: JavaBean字段如何防止非空赋值

本文链接: https://www.lsjlt.com/news/134037.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaBean字段如何防止非空赋值
    目录JavaBean字段防止非空赋值前言1、JavaBean制作2、利用反射实现工具类3、测试判断javabean是否非空,并给前台报出错误信息1、工具类2、catch捕获JavaB...
    99+
    2022-11-12
  • 如何给JavaBean赋默认值且转Json字符串
    这篇文章主要介绍了如何给JavaBean赋默认值且转Json字符串的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何给JavaBean赋默认值且转Json字符串文章都会有所收获,下面我们一起来看看吧。JavaB...
    99+
    2023-06-29
  • mysql如何修改字段为非空
    这篇文章主要介绍了mysql如何修改字段为非空,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 mysql中可使用...
    99+
    2022-10-19
  • mysql如何将一个字段赋值给另一个字段
    目录mysql将一个字段赋值给另一个字段mysql把表的指定字段值赋给本表另一个字段mysql将一个字段赋值给另一个字段 1.将同一个表中的一个字段的值复制给另一个字段 UPDATE t_user SET signed_...
    99+
    2022-09-24
  • MybatisPlus如何实现公共字段自动赋值
    这篇文章主要讲解了“MybatisPlus如何实现公共字段自动赋值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MybatisPlus如何实现公共字段自动赋值”吧!1 mybatis-plu...
    99+
    2023-07-02
  • MySQL如何修改字段的默认值和空值
    目录mysql修改字段的默认值和空值修改字段默认值修改字段值是否为空MySQL默认值NULL、空值、Empty String的区别如何选择?先说结论区别MySQL修改字段的默认值和空值 修改字段默认值 修改: ALTER...
    99+
    2022-08-29
  • 如何使用mysql给表新加的列字段赋值
    要给MySQL表的新列字段赋值,可以使用 `ALTER TABLE` 语句以及 `UPDATE` 语句。首先,使用 `ALTER T...
    99+
    2023-09-15
    mysql
  • 如何实现替换一个字段的所有非数字字符为空
    这篇文章主要介绍“如何实现替换一个字段的所有非数字字符为空”,在日常操作中,相信很多人在如何实现替换一个字段的所有非数字字符为空问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-18
  • Java反射机制,如何将一个实体类所有字段赋值为null
    目录将一个实体类所有字段赋值为null起因第一种方法第二种方法将实体类中的null属性置为““或者空值工具类测试类先创建需要的实体将一个实体类所有字段赋值为n...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作