• mapstruct更新现有实体忽略null空值


    JPA在做更新的时候经常要判断不是null的字段进行set很麻烦。

    例如:目标实体 A.a1=1,A.a2=2 源实体 B.a1=null,B.a2=1。要实现转换后 A.a1=1,A.a2=1。

    1、class上加注解。这个注解参数好像1.3版本以后才开始有的。

    @Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)

    2、必须用更新现有的Bean的方法。

    void updateAFromB(B b, @MappingTarget A a);

    mapstruct 1.3.1版文档原文

    10.6. Controlling mapping result for ‘null’ properties in bean mappings (update mapping methods only).

    MapStruct offers control over the property to set in an@MappingTargetannotated target bean when the source property equalsnullor the presence check method results in ‘absent’.

    By default the target property will be set to null.

    However:

    1. By specifyingnullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_DEFAULTon@Mapping,@BeanMapping,@Mapperor@MappingConfig, the mapping result can be altered to returndefaultvalues. ForListMapStruct generates anArrayList, forMapaHashMap, for arrays an empty array, forString``""and for primitive / boxed types a representation offalseor0. For all other objects an new instance is created. Please note that a default constructor is required. If not available, use the@Mapping#defaultValue.

    2. By specifyingnullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNOREon@Mapping,@BeanMapping,@Mapperor@MappingConfig, the mapping result will be equal to the original value of the@MappingTargetannotated target.

    The strategy works in a hierarchical fashion. SettingMapping#nullValuePropertyMappingStrategyon mapping level will overridenullValuePropertyMappingStrategyon mapping method level will override@Mapper#nullValuePropertyMappingStrategy, and@Mapper#nullValuePropertyMappingStrategywill override@MappingConfig#nullValuePropertyMappingStrategy.

  • 相关阅读:
    vue2中,使用sortablejs组件和vuedraggable实现拖拽排序功能
    获取文件时间并且将时间进行转换
    一个系列涨粉47w,小红书内容创意卷出新高度
    机器学习(四十九):Mean-Shift 聚类
    怎么把视频转换成mp4格式?
    【高项笔记】No.2 网络和网络协议
    day60
    LeetCode 4. 寻找两个正序数组的中位数
    使用【Python+Appium】实现自动化测试
    vue移动端适配
  • 原文地址:https://blog.csdn.net/fwdwqdwq/article/details/126434954