最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中給實體對象屬性的空值賦默認值

 更新時間:2022年03月02日 10:53:26   作者:我覺得OK  
這篇文章主要介紹了java中給實體對象屬性的空值賦默認值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

給實體對象屬性的空值賦默認值

private final String defaultStr = "";
private final Date defaultDate = new Date();
private final BigDecimal defaultDecimal = new BigDecimal(0);
private final Timestamp defaultTimestamp=new Timestamp(new Date().getTime());
//賦默認值
public void setDefaultValue(Object object) {
    	try {
    		Class clazz = object.getClass();
            Field[] fields = clazz.getDeclaredFields();
            String primaryKey = EntityUtil.getPrimaryKey(currentSession(), object.getClass());
            for(int i=0;i<fields.length;i++){
            	Field field = fields[i];
            	String fieldName = field.getName();
            	Class fieldClass=field.getType();
            	field.setAccessible(true); //設置訪問權限
				if(!fieldName.equals(primaryKey) && isFieldValueNull(fieldName,object)){
					if (fieldClass == Integer.class ) {
						field.set(object, defaultDecimal.intValue());
					}else if (fieldClass == Long.class) {
						field.set(object, defaultDecimal.longValue());
					}else if (fieldClass == Float.class) {
						field.set(object, defaultDecimal.doubleValue());
					}else if (fieldClass == BigDecimal.class) {
						field.set(object, defaultDecimal);
					} else if (fieldClass == Date.class) {
						field.set(object, defaultDate);
					} else if (fieldClass == String.class){
						field.set(object, defaultStr); // 設置值
					} else if (fieldClass == Timestamp.class){
						field.set(object, defaultTimestamp);
					}
            	}else if(fieldName.equals(primaryKey) && isStringFieldValueNull(fieldName,object,fieldClass)){//MySQL,需要對對主鍵做特殊處理
            		field.set(object, null);
            	}
            }
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
    }
 
//判斷字段是否為空
 private boolean isFieldValueNull(String fieldName, Object object) throws ClassNotFoundException {  
    	boolean isNUll=false;
        try {    
            String firstLetter = fieldName.substring(0, 1).toUpperCase();    
            String getter = "get" + firstLetter + fieldName.substring(1);    
            Method method = object.getClass().getMethod(getter, new Class[] {});    
            Object value = method.invoke(object, new Object[] {});    
            if(value==null){
            	isNUll=true;
            }
            return isNUll;    
        } catch (Exception e) {    
        	 return isNUll;    
        }    
    } 
 
  //判斷主鍵是否為空值
   private boolean isStringFieldValueNull(String fieldName, Object object, Class fieldClass) throws ClassNotFoundException { 
    	boolean isNUll=false;
        try {    
            String firstLetter = fieldName.substring(0, 1).toUpperCase();    
            String getter = "get" + firstLetter + fieldName.substring(1);    
            Method method = object.getClass().getMethod(getter, new Class[] {});    
            Object value = method.invoke(object, new Object[] {}); 
            if(value==null ){
            	isNUll=true;
            }else{
            	if (fieldClass == String.class && StringUtils.isBlank((String)value)) {
            		isNUll=true;
            	}
            }
            return isNUll;    
        } catch (Exception e) {    
        	 return isNUll;    
        }    
    } 
    

給實體類賦默認值通用方法

package com.clamc.common.util;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
/**
 * yangzhiwei
 * 使用反射給實體類k賦值(默認值)
 * insert update會報null異常,為空時不能插入和更新
 */
public class ObjInvoke {
    public static Object getObjDefault(Object obj) {
        // 得到類對象
        Class objCla = obj.getClass();
        Field[] fs = objCla.getDeclaredFields();
        for (int i = 0; i < fs.length; i++) {
            Field f = fs[i];
            // 設置些屬性是可以訪問的
            boolean isStatic = Modifier.isStatic(f.getModifiers());
            if(isStatic){
                continue;
            }
            // 設置些屬性是可以訪問的
            f.setAccessible(true);
            try {
                // 得到此屬性的值
                Object val = f.get(obj);
                // 得到此屬性的類型
                String type = f.getType().toString();
                if (type.endsWith("String") && val == null) {
                    // 給屬性設值
                    f.set(obj, "");
                } else if ((type.endsWith("int") ||  type.endsWith("Integer") || type.endsWith("double")) && val == null) {
                    f.set(obj, 0);
                }else if ((type.endsWith("long")|| type.endsWith("Long") )&& val == null){
                    f.set(obj, 0L);
                } else if (type.endsWith("Date") && val == null) {
                    f.set(obj, Date.valueOf("1970-01-01"));
                }else if(type.endsWith("Timestamp") && val == null){
                    f.set(obj, Timestamp.valueOf("1970-01-01 00:00:00"));
                } else if (type.endsWith("BigDecimal") && val == null) {
                    f.set(obj, new BigDecimal(0));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return obj;
    }
    public static List getObjDefaultList(List objList) {
        List list=new ArrayList();
        for(Object t:objList){
            list.add(getObjDefault(t));
        }
        return list;
    }
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • mybatis-plus常用注解@TableId和@TableField的用法

    mybatis-plus常用注解@TableId和@TableField的用法

    本文主要介紹了mybatis-plus常用注解@TableId和@TableField的用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • SpringCloud Config分布式配置中心使用教程介紹

    SpringCloud Config分布式配置中心使用教程介紹

    springcloud config是一個解決分布式系統(tǒng)的配置管理方案。它包含了 client和server兩個部分,server端提供配置文件的存儲、以接口的形式將配置文件的內(nèi)容提供出去,client端通過接口獲取數(shù)據(jù)、并依據(jù)此數(shù)據(jù)初始化自己的應用
    2022-12-12
  • Spring MVC實現(xiàn)文件上傳及優(yōu)化案例解析

    Spring MVC實現(xiàn)文件上傳及優(yōu)化案例解析

    本文介紹如何在SpringMVC框架中實現(xiàn)文件上傳和異步登錄功能,通過添加必要的依賴和配置,創(chuàng)建文件上傳頁面和控制器,實現(xiàn)文件上傳到指定文件夾,同時,展示了如何使用AJAX實現(xiàn)局部刷新的異步登錄,優(yōu)化用戶體驗,詳細步驟包括配置springmvc.xml、編寫前端頁面和控制器等
    2024-10-10
  • Spring Cloud中使用Eureka的詳細過程

    Spring Cloud中使用Eureka的詳細過程

    Eureka 是 Netflix 開源的一個服務發(fā)現(xiàn)組件,它在微服務架構中扮演著重要的角色,這篇文章主要介紹了Spring Cloud中如何使用Eureka,需要的朋友可以參考下
    2024-07-07
  • java 數(shù)據(jù)結構二叉樹的實現(xiàn)代碼

    java 數(shù)據(jù)結構二叉樹的實現(xiàn)代碼

    這篇文章主要介紹了java 數(shù)據(jù)結構二叉樹的實現(xiàn)代碼的相關資料,需要的朋友可以參考下
    2016-09-09
  • Java網(wǎng)絡編程之基于TCP協(xié)議

    Java網(wǎng)絡編程之基于TCP協(xié)議

    本文主要將Java基于TCP的網(wǎng)絡編程主要分解成5個功能:功能分解1:單向通信功能分解,2:雙向通信功能分解,3:對象流傳送功能分解,4:加入完整的處理異常方式功能分解,5:多線程接收用戶請求,需要的朋友可以參考下
    2021-05-05
  • 詳解mybatis @SelectProvider 注解

    詳解mybatis @SelectProvider 注解

    這篇文章主要介紹了mybatis @SelectProvider 注解的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-12-12
  • 關于Elasticsearch封裝公共索引增刪改查

    關于Elasticsearch封裝公共索引增刪改查

    索引是Elasticsearch中存儲數(shù)據(jù)的邏輯單元,類似于關系數(shù)據(jù)庫中的表,它包含多個文檔,每個文檔都是一個結構化的JSON數(shù)據(jù)格式,在實際應用中,索引的使用與配置可以依據(jù)不同的方案進行,例如在Spring Boot項目中,可以選擇自動配置或者手動編寫配置類
    2024-10-10
  • Java如何比較兩個任意文件是否相同

    Java如何比較兩個任意文件是否相同

    這篇文章主要為大家詳細介紹了Java如何實現(xiàn)比較兩個任意文件是否相同,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • 詳解JAVA調(diào)用WCF服務的示例代碼

    詳解JAVA調(diào)用WCF服務的示例代碼

    這篇文章主要介紹了詳解JAVA調(diào)用WCF服務的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

富顺县| 花莲县| 高州市| 明溪县| 永济市| 蒲城县| 库尔勒市| 徐水县| 云安县| 广东省| 黑水县| 福泉市| 武安市| 枝江市| 青河县| 文登市| 罗源县| 新邵县| 岐山县| 定南县| 微山县| 普宁市| 兴义市| 晋城| 安龙县| 舞阳县| 临海市| 华宁县| 缙云县| 汝阳县| 淮阳县| 南投县| 喀喇| 麻城市| 宣武区| 临邑县| 盘锦市| 鄂托克旗| 余庆县| 湖南省| 称多县|