java 给实体类赋默认值通用方法
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; /** * 使用反射给实体类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; } }
本文作者:岁月记忆
本文链接:https://www.cnblogs.com/huang2979127746/p/17425062.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步