首页 > 编程语言 >Java实现对象空属性(空字符串)转null

Java实现对象空属性(空字符串)转null

时间:2023-03-09 22:23:27浏览次数:33  
标签:Java String getName field 字符串 obj null 属性

@Slf4j
public class ConvertUtils {

    /**
     * @Description 主要解决查询时前端传参为空值 ("")
     * BeanUtils.copyProperties会把空值带入目标对象中
     * 使用目标对象作为查询对象到mybatisPlus进行查询会导致没有匹配数据;
     * 使用该方法将 空值 转换为 null,避免copy时带入到查询对象
     **/
    public static <T> void emptyToNull(T obj){
        Class<? extends Object> clazz = obj.getClass();
        // 获取实体类的所有属性,返回Field数组
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            // 可访问私有变量
            field.setAccessible(true);
            // 获取属性类型
            String type = field.getGenericType().toString();
            // 如果type是类类型,则前面包含"class ",后面跟类名
            if ("class java.lang.String".equals(type)) {
                // 将属性的首字母大写
                String methodName = field.getName().replaceFirst(field.getName().substring(0, 1),
                        field.getName().substring(0, 1).toUpperCase());

                try {
                    Method methodGet = clazz.getMethod("get" + methodName);
                    // 调用getter方法获取属性值
                    String str = (String) methodGet.invoke(obj);
                    //属性为null结束循环
                    if (str == null) {
                        continue;
                    }
                    if ("".equals(str)) {
                        // 为空 设置为null
                        field.set(obj, null);
                    }
                } catch (Exception e) {
                    log.error("emptyToNull 方法属性转换异常: {}",e.getMessage());
                }
            }


        }
    }
}

 

标签:Java,String,getName,field,字符串,obj,null,属性
From: https://www.cnblogs.com/ixtao/p/17201707.html

相关文章

  • Java数据类型转换
    类型转换由于Java是强类型语言,所以要进行有些运算的时候需要用到类型转换。低 ---------------------------------> 高byte,short,char->int->long->float->doub......
  • 计算机组成原理--字符和字符串
             ......
  • Java Set Summary
    JavaSetSummary一、概要Set6个类名since线程安全elementnull特点Set1.2HashSet1.2NoYes基于HashMap实现TreeSet1.2NoNo基于TreeMa......
  • [java-project-gl]接口幂等性
    接口幂等性一、什么是幂等性接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用;比如说支付场景,用户购买了商品支......
  • [java-project-gl]分布式缓存
    分布式缓存缓存常见的问题缓存穿透缓存和数据库中都没有的数据,而用户不断发起请求,导致数据压力过大,甚至击垮数据库比如黑客会对你的系统进行攻击,拿一个不存在的id去查......
  • [java-Spring]-Spring Boot入门基本操作
    目录一、SpringBoot入门1、SpringBoot简介2、微服务3、环境准备1、MAVEN设置;2、IDEA设置4、SpringBootHelloWorld1、创建一个maven工程;(jar)2、导入springboot相关的......
  • [java-project-gl]购物车
    一、购物车1、购物车需求1、需求描述:用户可以在登录状态下将商品添加到购物车【用户购物车/在线购物车】放入数据库mongodh放入redis(采用)登录以后,会将临时购物......
  • [java]-[cloud]openfeigon底层使用的什么传输协议,执行流程是怎样的
    1.1Feign概述这篇文章主要讲述如何通过Feign去消费服务,以及Feign的实现原理的解析。Feign是Netflix开发的声明式、模板化的HTTP客户端,Feign可以帮助我们更快捷、优雅地......
  • [java]-[cloud]-Spring Cloud Alibaba Sentinel
    1、整合Sentinel1、pom.xml安装依赖<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-s......
  • [java]-[cloud]基础篇-Spring Cloud Gateway网关
    SpringCloudGateway网关API网关API网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务......