激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JavaBean字段如何防止非空賦值

JavaBean字段如何防止非空賦值

2021-12-10 12:57HealerJean. Java教程

這篇文章主要介紹了JavaBean字段如何防止非空賦值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

JavaBean字段防止非空賦值

前言

工具類制作起因,有時候項目中出一點點錯誤,在所難免,經常,有些地方的字段是String,但是到了其他地方是Long,Date,Interger,BigDecimal,這個時候每次都需要判斷下是否為空,否則就會在New BigDecimal(string)等中轉化失敗,報空指針。 如果字段很多,簡直太惡心了。

這里日期是最惡心心,日期分為Date類型和String類型 轉化為Date

舉例

?
1
2
3
if(string!=null){
   date.setBigValue(new BigDecimal(string));
 }

1、JavaBean制作

1.1、初始JavaBean User

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * 作者 :HealerJean
 * 日期 :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、利用反射實現工具類

需要注意的是,下面的日期,在我們通過反射獲取到值的時候,它打印出來的是英文日期串,我們需要對他進行一個轉化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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;
/**
 * 作者 :HealerJean
 * 日期 :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(newObject, date);
                        break;
                    default:
                        break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3、測試

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.hlj.IgnoreNullBean;
import com.hlj.IgnoreNullBean.data.User;
import com.hlj.IgnoreNullBean.data.UserNow;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 作者 :HealerJean
 * 日期 :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、工具類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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;
/**
 * 作者 :HealerJean
 * 日期 :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){
                    //返回flase或者直接拋出異常,根據我們的情況而定
                    throw  new AppException(fieldName[i]+"不能為空");
                }
            }
            return true ;
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return false ;
    }
}

2、catch捕獲

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@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());
    }
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/u012954706/article/details/84985935

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: 久久久久久久国产视频 | 黄色av网 | 国产亚洲欧美日韩高清 | 黄色av电影在线播放 | 欧美日韩在线中文字幕 | 国产麻豆交换夫妇 | 久久精品一区二区三 | 亚洲影视中文字幕 | 国产精品一区二区日韩 | 国产精品成人一区二区三区电影毛片 | 91在线观看| 毛片免费观看完整版 | av在线免费观看网址 | 激情综合视频 | 成人在线观看一区 | 国产免费高清在线视频 | 久久亚洲线观看视频 | 国产在线免费 | 亚洲特黄a级毛片在线播放 久久久入口 | 黄色av电影在线播放 | 一级毛片免费版 | 4p一女两男做爰在线观看 | 色诱亚洲精品久久久久久 | 最新日韩中文字幕 | 国产精品一区二区日韩 | 黄色特级片黄色特级片 | 亚洲男人一区 | 欧美激情猛片xxxⅹ大3 | 午夜生活理论片 | 有兽焉免费动画 | 精品一区二区三区欧美 | 天天干导航 | 成人一级片毛片 | 曰韩黄色片 | 高清久久久久 | 精品在线免费播放 | 国产精品久久久久久婷婷天堂 | 欧美高清视频一区 | 免费在线观看成人网 | vidz 98hd| 一区二区三区欧美在线观看 |