首页 > 编程语言 >java 给实体类赋默认值通用方法

java 给实体类赋默认值通用方法

时间:2023-05-23 14:22:13浏览次数:32  
标签:实体类 java val endsWith import obj 默认值 type

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;
    }
}

 

标签:实体类,java,val,endsWith,import,obj,默认值,type
From: https://www.cnblogs.com/huang2979127746/p/17425062.html

相关文章

  • java中运行指令浅析
    后续业务可能需要在程序中运行指令,所以这里简单探究了一下,分别从win和linux两个平台进行研究,又以为java是跨平台语言,可能二者之间的区别应该只是返回内容与输入指令的不同.(还不是在win上开发)1.如何使用Runtime.getRuntime().exec("notepad");RuntimeUtil.exec(......
  • Java 局部变量
     局部变量声明在方法、构造方法或者语句块中。局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁。局部变量必须在使用前声明,并且不能被访问修饰符修饰,因为它们的作用域已经被限制在了声明它们的方法、代码块或构造函数中。局部变量只在......
  • JavaScript正则获取a标签中的path路径值-流程引擎-计算引擎
    直接上代码://获取附件中的链接地址functionget_file_path_from_encode_value(x){vararrLink=[];x.replace(/<a[^>]*path=['"]([^'"]+)[^>]*/gi,function(match,capture){arr......
  • 关于AI与api-Java接口的区别应用点
    AI和API是目前互联网技术中的两个趋势,它们在许多领域都发挥了重要作用。在技术的领域中,AI代表的是人工智能,而API代表的是应用程序接口。在本文中,将讨论AI和API的详细分析。AI是人工智能的简称,是指通过计算机技术模拟人类智能的一种技术体系。AI可以学习数据并自我改进,以达到更好的......
  • Java中的普通类和抽象类有什么区别?
    1.实例化对象:普通类可以被实例化,而抽象类不能被直接实例化。2.成员:普通类中可以有成员变量、成员方法和构造方法,而抽象类中也可以有这些成员,但是抽象类中还可以有抽象方法。3.抽象方法:抽象类中有抽象方法,这些方法没有实现体,需要在子类中被实现和重写。而普通类中没有抽象方法......
  • OpenAPI document 生成实体类
    根据 OpenAPIdocument 生成.net类包括Controllerclass Entityclass 支持输入yaml/json工具下载地址:NSwagStudio.msihttps://github.com/RicoSuter/NSwag/releases......
  • JAVA设计模式之责任链模式
    文章目录一、责任链(ChainofResponsibility)模式二、责任链模式的结构三、源码四、纯的与不纯的责任链模式五、总结一、责任链(ChainofResponsibility)模式顾名思义,责任链模式(ChainofResponsibilityPattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发......
  • 微信分享+java后台
    ​微信分享很多人都接触过,我只是把我自己的方法写了一下。不好之处,敬请原谅!先来一张流程图,很实用,也是网上找的,感谢这位博主。​编辑 公众号配置那些就不写了,直接上代码吧!1)、官方上面有相应的签名代码,下载下来就行 进入官方文档 https://mp.weixin.qq.com/wiki?t=resourc......
  • 支付宝APP支付(java后台版)
    ​本实例是基于springBoot框架编写  一、流程步骤      1.执行流程        当手机端app在支付页面时,调起服务端创建订单(自己公司业务接口)接口,后台把需要调起支付宝支付的参数返回给手机端,手机端得到参数后,调起支付宝支付环境支付,完成支付后后会调异......
  • Java开发Lombok使用详解
    转:https://www.jb51.net/article/198920.htm什么是LombokLombok是一款Java开发插件,可以通过它定义的注解来精简冗长和繁琐的代码,主要针对简单的Java模型对象(POJO)。好处就显而易见了,可以节省大量重复工作,特别是当POJO类的属性增减时,需要重复修改的Getter/Setter、构造器方法、eq......