首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bean的MapStruct nullValueMappingStrategy原语返回缺省bean,而不是空值

Bean是Java中的一个概念,指的是一个普通的Java对象,通常用于封装数据。MapStruct是一个Java注解处理器,用于生成类型安全的Bean映射代码。

nullValueMappingStrategy是MapStruct中的一个配置选项,用于指定在映射过程中处理空值的策略。默认情况下,nullValueMappingStrategy设置为RETURN_NULL,即如果源对象的属性值为null,则映射后的目标对象的对应属性也会被设置为null。

然而,当使用nullValueMappingStrategy设置为RETURN_DEFAULT时,如果源对象的属性值为null,则映射后的目标对象的对应属性会被设置为该属性类型的默认值,而不是null。这个默认值取决于属性的类型,比如对于基本数据类型,会使用其对应的原始类型的默认值。

这个策略的优势在于可以避免目标对象中的属性为null的情况,从而减少了空指针异常的风险。

在实际应用中,nullValueMappingStrategy的选择取决于具体的业务需求。如果希望映射后的目标对象中的属性保持为null,可以使用默认的RETURN_NULL策略;如果希望映射后的目标对象中的属性使用默认值来代替null,可以选择RETURN_DEFAULT策略。

MapStruct是一个功能强大且易于使用的Java映射框架,可以帮助开发人员简化Bean之间的映射过程。对于MapStruct的详细介绍和使用示例,可以参考腾讯云的产品文档:MapStruct产品介绍

注意:在回答中没有提及云计算品牌商,以及腾讯云以外的其他品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

对象拷贝 - 优雅解决方案 Mapstruct

我们都得进行手动判断处理然后编辑成DTO返回给前端 MapStruct是一种类型安全bean映射类生成java注释处理器。 我们要做就是定义一个映射器接口,声明任何必需映射方法。...MapStruct 拥有的优点: 使用普通方法调用不是反射来快速执行,他会在编译器生成相应 Impl 方法调用时直接通过简单 getter/setter调用不是反射或类似的方式将从源复制到目标...参数映射结果 : 默认情况下 null 会返回,通过指定 nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT 上 @...BeanMapping,@IterableMapping,@MapMapping,或全局上 @Mapper 或 @MappingConfig,映射结果可以被改变以返回空默认 1> Bean映射 :...将返回一个 '' 目标bean,除常量和表达式外,它们将在存在时填充 2> 基元 : 基元默认将被返回,例如 false for boolean 或 0 for int 3> Iterables

6.8K20

MapStruct1.5使用教程(高级版)

一、什么是 MapStruct MapStruct 核心概念 MapStruct是一个Java注解处理器,它主要功能是自动生成类型安全、高性能且无依赖bean映射代码。...6、集成Spring:MapStruct也可以与Spring框架集成,允许在映射器中注入Spring管理bean。...这个注解有许多参数可以使用,例如,你可以选择在更新时忽略null 以下是一些常见使用场景: resultType: 这个参数允许你指定映射方法返回类型。...elementTargetType:用于指定目标对象集合元素类型。 nullValueMappingStrategy:用于处理源对象集合中包含对象或者 null 情况。...其中,nullValueMappingStrategy 属性指定当源对象集合中包含对象或者 null 时,返回默认。 24.

1.4K10
  • 喜新厌旧,是我本性。今天就宠mapstruct怎么了!

    这种思想转变,从侧面上证明了,我并不是一个专一的人。 因为我是一条狗。 喜新厌旧,是我本性,即使我把自己表现很纯洁。 按理说,牛x的人物并不需要关注语言层面这种较低级问题。...相同字段名相同类型属性,将会无差别的拷贝过去。 如果你bean属性非常多,这个工具会让你代码由几百行,变成几行! 2. 与其他方式比较 那mapstruct有什么优势么?...BeanUtils属性拷贝,在判断和不同类型属性时,有很多障碍,会歇菜;mapstruct有非常灵活策略和转化方式,自定义性比较强(后面会谈到)。 3....复杂场景 那下面我们就来看一个复杂场景。 如果你bean中,只有一些普通属性,那么使用mapstruct,就是如丝般顺滑。但总有一些异常情况,需要使用更高级处理方式。...如何将普通类型转化为枚举类型呢?我们只需要提供一个default方法就ok了。mapstruct会判断参数类型和返回,所以说方法名称可以是任何合法

    1.8K10

    从零搭建Spring Boot脚手架(2):增加通用功能

    data 数据载体,用以装载返回给前端展现数据。 msg 提示信息,用于前端调用后返回提示信息,例如 “新增成功”、“删除失败”。 identifier 预留标识位,作为一些业务处理标识。...msg:" + msg + ", identifier:" + identifier + '}'; } } 但是每次都要显式声明返回体也不是很优雅办法...返回一个不带数据返回体 if (o == null) { return RestBody.ok(); } // 如果 RestBody... 父类 是 返回父类型 直接返回 // 方便我们可以在接口方法中直接返回RestBody if (Rest.class.isAssignableFrom(o.getClass...简化类型转换 简化Java Bean之间转换也是一个必要功能。这里选择mapStruct,类型安全而且容易使用,比那些BeanUtil要好用多。

    68320

    BeanCopier_contabo测评

    概述 常见或常用几种Bean属性复制工具 Apache.BeanUtils Apache.PropertyUtil Spring.BeanUtils Cglib.BeanCopier MapStruct...获取实例方法 实例获取函数是同步,因为ContextClassLoader不同,每个线程都会创建一个实例 属性复制函数:先是判断,然后通过Java内省机制获取属性描述,判断属性是否可读...基本流程同Apache.BeanUtils 区别 BeanUtils支持属性类型转换,PropertyUtils不支持,若有同名不同类型属性,则会报错。...(支持自定义类型转换器) 【有convert情况】 【无convert情况】 生成BeanCopier里面直接使用Beansetter/getter ---- MapStruct...org.mapstrcut.* http://mapstruct.org/ 支持XML配置和注解配置 使用示例 自定义Mapper类 编译生成实现类 Bean复制 ---- EZMorph

    76020

    第三十章:SpringBoot使用MapStruct自动映射DTO

    MapStruct是一种类型安全bean映射类生成java注释处理器。 我们要做就是定义一个映射器接口,声明任何必需映射方法。在编译过程中,MapStruct会生成此接口实现。...官方提供了两种方式,上面配置文件内我们采用是直接添加Maven依赖,官方文档还提供了另外一种方式,采用Maven插件形式配置,配置如下所示: ...引用官方文档 ......我们最终目的是为了返回一个自定义DTO实体,那么我们就先来创建这个DTO,DTO代码如下所示: package com.yuqiyu.chapter30.dto; import lombok.Data...target代表是映射到方法方法字段名称,配置如上面GoodInfoMapper所示。...运行测试 下面我们来创建一个测试Controller,用于访问具体请求地址时查询出商品基本信息以及商品类型后调用GoodInfoMapper.from(xxx,xxx)方法完成返回GoodInfoDTO

    5.2K70

    Java对象拷贝_对象拷贝有几种方法

    MapstructMapStruct是一个Java 注释处理器,用于为Java Bean类生成类型安全和高性能映射器。它使您不必手工编写映射代码,这是一个繁琐且容易出错任务。...该生成器具有合理默认和许多内置类型转换,但是在配置或实现特殊行为时,它会自动退出。...与运行时工作映射框架相比,MapStruct具有以下优点: 通过使用普通方法调用不是反射来快速执行 编译时类型安全。只能映射彼此映射对象和属性,因此不会将订单实体意外映射到客户DTO等。...如果你仅是在日常处理少量对象时,选取哪个其实变得并不重要,但数据量大时建议还是使用MapStruct 或 BeanCopier 方式,提高接口性能 一、背景 1.1 对象拷贝概念 Java中,数据类型分为类型...BeanCopier支持两种方式: 一种是不使用Converter方式,仅对两个bean间属性名和类型完全相同变量进行拷贝; 另一种则引入Converter,可以对某些特定属性进行特殊操作。

    4.9K10

    你居然不知道MapStruct

    写一个Mapper接口StudentMapper,此处Mapper注解不是MyBtaisMapper注解。 接下来测试一下,看一下生成结果。...例如,属性在源bean中可以是int类型,但在目标bean中可以是Long类型。另一个例子是对其他对象引用,这些对象应该映射到目标模型中相应类型。...Student中是SexEnum枚举,StudentVO中是Sex2Enum,且枚举中是一致时,我们需要将Student中映射到StudentVO中,此时只需要使用@Mapping来指定映射源和目标源名称即可...当枚举一样时,直接使用@Mapping来指定映射源和目标源名称即可 当枚举不一致时,使用@ValueMapping注解。...所以我们可以定义工厂形式来生成实例,MapStruct去调用工厂来生成实例,不再使用构造方法。

    2.4K31

    帮助 Java 开发人员进行 Bean 映射 8 大框架

    当你想要封装(隐藏)数据时,它需要一个 get 方法来返回,并需要一个 set 方法来设置或更新它。...它带有内置转换和合理默认,在实现或配置特定行为时不会打扰您。 MapStruct 通过尽可能地自动化来简化映射。它生成 bean 映射编译时间以确保高性能、彻底错误检查和快速反馈。...要使用 MapStruct,您需要定义映射器接口,声明所有必需映射方法。...dOOv、JMapper、MapStruct、ModelMapper、reMap、Orika、Selma 和 Dozer 等 Java Bean 映射框架可用于映射。...s(sourceObject.getYourSourceFieldName())); 使用框架使 JavaBeans 映射更容易 在开发为满足大型企业需求量身定制软件或 Web 应用程序时,[Java

    2.3K10

    java开发中DTO、VO、PO之间转换你应该这么操作

    编写映射 我们把开始痛点解决一下,编写Car到CarDTO映射。 ? 声明一个映射接口用@org.mapstruct.Mapper 标记,说明这是一个bean转换接口。...这里我们声明了一个 CAR_MAPPING 来方便我们调用,CarDTO toCarDTO(Car car)是不是很熟悉, 像mybatis一样抽象出我们转换方法。...这里以成员变量参数名为依据,如果有嵌套比如Car里面有个CarType类型成员变量type,其type属性 来映射CarDTO中type字符串,我们使用type.type 来获取属性。...我们是不是忘记了一个属性make,因为他们位置且名称完全一致,所以可以省略。而且对于包装类是自动拆箱封箱操作,并且是线程安全。...MapStruct不单单有这些功能,还有其他一些复杂功能: 设置转换默认和常量。

    8.9K20

    试试这款 Bean 自动映射工具,真心强大!!

    模式 我相信大部分人做法都是这样,虽然很直接,但是普遍真的很 Low,耦合性又强,还经常丢参数,或者搞错参数值,在这个开发场景,我个人觉得这些都不是最佳方式。...MapStruct 简介 官网地址: https://mapstruct.org/ 开源地址: https://github.com/mapstruct/mapstruct Java bean mappings...以简单方式进行 Java bean 映射。...MapStruct 是一个代码生成器,它和 Spring Boot、Maven 一样也是基于约定优于配置理念,极大地简化了 Java bean 之间数据映射实现。...null : favorite;             }         }     } } 其实实现类就是调用了对象 get/set 等其他常规操作, List 就是循环调用该对象单个映射方法

    76210

    12种 vo2dto 方法,就 BeanUtil.copyProperties 压测数据最拉跨!

    MapStruct 四、总结 五、系列推荐 一、前言 为哈么,你代码也就仅仅是能用而已? 没有技术深度、短缺知识储备、匮乏经验积累前提下,怎么写代码?...接下来我们来用数据验证下,并提供出各种案例使用对比 二、性能测试对比 在 Java 系统工程开发过程中,都会有各个层之间对象转换,比如 VO、DTO、PO、VO 等,如果都是手动get、set又太浪费时间...目前我整理出,用于对象属性转换有12种,包括:普通getset、json2Json、Apache属性拷贝、Spring属性拷贝、bean-mapping、bean-mapping-asm、BeanCopier...,如果使用的话需要把 MapperFactory 构建优化成 Bean 对象 9....所以我更推荐我喜欢 MapStruct,这货用起来还是比较舒服,一种是来自于功能上拓展性,易用性和兼容性。

    1.1K30

    从原理层面掌握HandlerMethod、InvocableHandlerMethod、ServletInvocableHandlerMethod使用【享学Spring MVC】

    HandlerMethod HandlerMethod它不是一个接口,也不是个抽象类,且还是public。...方法(无set方法) // 返回方法返回类型 此处也使用MethodParameter public MethodParameter getReturnType() { return...举个列子:比如方法返回是Object,但实际return “fsx”字符串 // 那么上面返回永远是Object.class,下面你实际是什么类型就是什么类型 public MethodParameter...所以总的来说它职责还是很单一:HandlerMethod它只负责准备数据,封装数据,不提供具体使用方式方法~ 看看它继承树: ?...并且,并且如果returnValue=null或者reason不为(不为null且不为“”),将中断处理直接返回(不再渲染页面) 对返回returnValue处理 1.

    1.6K10

    使用Optioanl优雅处理

    如果他并非谨慎,或者他是一个面向接口编程狂热分子(当然,面向接口编程是正确方向),他会按照自己理解去调用接口,不进行是否为null条件判断,如果这样的话,是非常危险,它很有可能出现指针异常...除了以上这种”弱提示”方式,还有一种方式是,返回是有可能为。那要怎么办呢?...空集合返回 : 如果有集合这样返回时,除非真的有说服自己理由,否则,一定要返回空集合,不是null Optional: 如果你代码是jdk8,就引入它!...只有当考虑它返回null是合理情况下,才进行Optional返回 集合实体返回 不是所有的返回都可以这样用!...(我想说,其实你实体中字段应该都是由业务含义,会认真的思考过它存在价值,不能因为Optional存在滥用) 我们应该更关注于业务,不只是判断。

    1.9K20

    如何优雅地根治null引起Bug!

    有时候,更可怕是系统因为这些情况,会抛出指针异常,导致业务系统发生问题。 此篇文章,总结了几种关于处理手法,希望对读者有帮助。...除了以上这种”弱提示”方式,还有一种方式是,返回是有可能为。那要怎么办呢? 我认为我们需要增加一个接口,用来描述这种场景....空集合返回 :如果有集合这样返回时,除非真的有说服自己理由,否则,一定要返回空集合,不是null Optional: 如果你代码是jdk8,就引入它!...只有当考虑它返回null是合理情况下,才进行Optional返回 集合实体返回 不是所有的返回都可以这样用!...(我想说,其实你实体中字段应该都是由业务含义,会认真的思考过它存在价值,不能因为Optional存在滥用) 我们应该更关注于业务,不只是判断。

    87610

    高级Java都这样优雅处理

    有时候,更可怕是系统因为这些情况,会抛出指针异常,导致业务系统发生问题。 此篇文章,我总结了几种关于处理手法,希望对读者有帮助。...除了以上这种” 弱提示” 方式,还有一种方式是,返回是有可能为。那要怎么办呢? 我认为我们需要增加一个接口,用来描述这种场景....空集合返回 :如果有集合这样返回时,除非真的有说服自己理由,否则,一定要返回空集合,不是 null Optional: 如果你代码是 jdk8,就引入它!...只有当考虑它返回 null 是合理情况下,才进行 Optional 返回 集合实体返回 不是所有的返回都可以这样用!...(我想说,其实你实体中字段应该都是由业务含义,会认真的思考过它存在价值,不能因为 Optional 存在滥用) 我们应该更关注于业务,不只是判断。

    1.7K30

    芋道 Spring Boot 对象转换 MapStruct 入门

    应用分层 分层之后,每一层都有自己领域模型,即不同类型 Bean: DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。...如下是 MapStruct 简介,胖友可以简单了解下: MapStruct 是用于生成类型安全 Bean 映射类 Java 注解处理器。...在配置方法约定之后,MapStruct 使用了合理默认,但在配置或实现特殊行为时将不再适用。...省略 setter/getter 方法 } 2.4 UserConvert 创建 UserConvert 接口,作为 User 相关 Bean 转换器。...至此,我们已经完成了 MapStruct 和 Lombok 集成。 4. @Mapping 在对象转换时,我们可能会存在属性不是完全映射情况,例如说属性名不同。

    2.7K20

    丢弃掉那些 BeanUtils 工具类吧,MapStruct 是真香!!!

    应用分层 分层之后,每一层都有自己领域模型,即不同类型 Bean: DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。...如下是 MapStruct 简介,胖友可以简单了解下: “MapStruct 是用于生成类型安全 Bean 映射类 Java 注解处理器。...在配置方法约定之后,MapStruct 使用了合理默认,但在配置或实现特殊行为时将不再适用。...省略 setter/getter 方法 } 2.4 UserConvert 创建 UserConvert 接口,作为 User 相关 Bean 转换器。...至此,我们已经完成了 MapStruct 和 Lombok 集成。 4. @Mapping 在对象转换时,我们可能会存在属性不是完全映射情况,例如说属性名不同。

    2.2K50
    领券