<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
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; } }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45