解析MapStruct转换javaBean时出现的诡异事件

在项目中用到了MapStruct,对其可以转换JavaBean特别好奇,因为之前都是使用Vo的方式手动set转换,但是接触到MapStruct后感觉以前使用Vo的方式确实有点low

于是就想着去看一下,写了个demo。于是这诡异的时间就开始了

我得代码如下:

这是pom文件

这是我的两个javaBean

大家可以看到那个发灰的序列化接口,那是因为我再运行出结果是转换后的JavaBean属性为空,我以为是序列化时导致的所以我去掉了,

可是后来发现完全不是这个原因

这是我的mapper转换类

还有我的启动执行类

正确的运行结果应该是这样的

现在我的运行结果是

这让我挺懵X的,于是我查了好多大佬的博客,都说在pom中添加 “maven-compiler-plugin” 的配置就可以解决于是我配置了

如下:

那灰色的是看到有的大佬说的这么配置,之前我的maven-compiler-plugin是3.8版本的,跟着大佬的只是做成了现在的样子,但是好像还是没什么用,

运行之后属性就是空的,我尝试maven-clean和maven-instell在我大量的尝试中我突然发现在install之后修改那个转换的方法名之后就可以转换成功,属性也有了值,

我通过debug方式去看了执行过程中,在我没有改方法名之前mapper的实现类中没有生成set方法,但是我改了之后就会生成set方法,这也是导致属性为null的直接原因。

我尝试了好多的方法,看了好多的资料也没想明白,为什么会出现这样的问题,苦恼》》》啊!!

我就是在打包后改了这个方法

只要改动一下这个构造方法就可以实现。。

求大佬解惑,什么原因啊

到此这篇关于MapStruct转换javaBean时出现的诡异事件的文章就介绍到这了,更多相关MapStruct转换javaBean内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Javabean转换成json字符并首字母大写代码实例

    这篇文章主要介绍了javabean转成json字符并首字母大写代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天写接口的时候有个需求将接口返回的json字符串首字母大写:{"SN":"","Result":""}格式, 只需要在返回bean里面属性上加上@JsonProperty注解就可以了 import com.fasterxml.jackson.annotati

  • MapStruct实体间转换的简单用法

    摘要: 在实际项目中,我们经常需要将PO转DTO.DTO转PO等一些实体间的转换.比较出名的有BeanUtil 和ModelMapper等,它们使用简单,但是在稍显复杂的业务场景下力不从心.MapStruct这个插件可以用来处理domin实体类与model类的属性映射,可配置性强. 建立Maven项目 MapStruct需要醒目构建工具(如Maven)支持,如果项目结构不标准,可能无法生成对应的转换类.这里我使用Maven构建工程. <properties> <org.mapstruct

  • MapStruct处理Java中实体与模型间不匹配属性转换的方法

    摘要: 前面介绍了MapStrut简单用法,MapStrut的最重要的特点就是处理Java中实体与模型间不匹配属性的转换. 实体模型 有一个User对象: public class User { private Integer id; private String name; private double account; private boolean married; // setters, getters, toString() } 有一个Employee 对象: public class

  • JavaBean和Map转换封装类的方法

    实例如下: package com.ljq.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.ut

  • MapStruct实体转换及List转换的方法讲解

    开发中,我们经常需要将PO转DTO.DTO转PO等一些实体间的转换.比较出名的有BeanUtil 和ModelMapper等,它们使用简单,但是在稍显复杂的业务场景下力不从心.MapStruct这个插件可以用来处理domin实体类与model类的属性映射,可配置性强.只需要定义一个 Mapper 接口,MapStruct 就会自动实现这个映射接口,避免了复杂繁琐的映射实现.MapStruct官网地址: http://mapstruct.org/ 引入依赖 <dependency> <gr

  • 解析MapStruct转换javaBean时出现的诡异事件

    在项目中用到了MapStruct,对其可以转换JavaBean特别好奇,因为之前都是使用Vo的方式手动set转换,但是接触到MapStruct后感觉以前使用Vo的方式确实有点low 于是就想着去看一下,写了个demo.于是这诡异的时间就开始了 我得代码如下: 这是pom文件 这是我的两个javaBean 大家可以看到那个发灰的序列化接口,那是因为我再运行出结果是转换后的JavaBean属性为空,我以为是序列化时导致的所以我去掉了, 可是后来发现完全不是这个原因 这是我的mapper转换类 还有我

  • spring boot @ResponseBody转换JSON 时 Date 类型处理方法【两种方法】

    spring boot @ResponseBody转换JSON 时 Date 类型处理方法[两种方法],Jackson和FastJson两种方式. spring boot @ResponseBody转换JSON 时 Date 类型处理方法 ,这里一共有两种不同解析方式(Jackson和FastJson两种方式) 第一种方式:默认的json处理是 jackson 也就是对configureMessageConverters 没做配置时 mybatis数据查询返回的时间,是一串数字,如何转化成时间.

  • 探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法

    [造成原因]:Because PHP's integer type is signed, and many IP addresses will result in negative integers. [解决办法]:其官方手册中提到,可以"you need to use the "%u" formatter of sprintf() or printf() to get the string representation of the unsigned IP address&

  • C#实现毫秒转换成时分秒的方法

    本文实例讲述了C#实现毫秒转换成时分秒的方法.分享给大家供大家参考.具体实现方法如下: public static String formatLongToTimeStr(Long l) { String str = ""; int hour = 0; int minute = 0; int second = 0; second = l.intValue() / 1000; if (second > 60) { minute = second / 60; second = seco

  • Android 实现秒转换成时分秒的方法

    在对时间进行转换中,通常会把秒转换成时分秒的小功能,怎么才能做到呢,其实也简单 这就涉及到时分秒之间的相互转换 具体代码如下: import android.content.Context; public class ToolsUtil { private static ToolsUtil toolsUtil; private Context mContext; private ToolsUtil(Context context) { mContext = context.getApplicat

  • Java lambda list转换map时,把多个参数拼接作为key操作

    我就废话不多说了,大家还是直接看代码吧~ Map<String, Parts> partsMap = synList.stream().collect(Collectors.toMap(k -> k.getOe()+k.getOeId()+k.getPartGroupId()+k.getStdPartId()+k.getBrandCode(), part -> part)); 补充知识:Java8 Collectors.toMap的两个大坑 Collectors.toMap()方法

  • Go语言将string解析为time.Time时两种常见报错

    目录 1.错误 2.报错信息详细 3.解决方案 1.错误 错误1:parsing time “xx”: xxx out of range错误2:parsing time “xx”:cannot parse"xx" as “-” 2.报错信息详细 详细1: parsing time "2022/10/31 19:00:01": month out of range 详细2: parsing time "2022/10/31 20:00:01" as

  • 深入解析PHP的Yii框架中的event事件机制

    事件 事件可以将自定义代码"注入"到现有代码中的特定执行点.附加自定义代码到某个事件,当这个事件被触发时,这些代码就会自动执行.例如,邮件程序对象成功发出消息时可触发 messageSent 事件.如想追踪成功发送的消息,可以附加相应追踪代码到messageSent 事件. Yii 引入了名为 yii\base\Component 的基类以支持事件.如果一个类需要触发事件就应该继承 yii\base\Component 或其子类. Yii的event机制 YII的事件机制,是其比较独特

  • 解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题

    功能描述: 如图,右侧悬浮菜单按钮,只支持上下方向拖动,点击时展开或关闭菜单. BUG说明: 鼠标上下方向拖拽,如果松开时鼠标位于悬浮按钮上会默认执行click事件,经验证,click事件与mouse事件的执行顺序为onmousedown =>onmouseup =>onclick,意味着在click事件执行时会与与其相关的mouse事件冲突. 解决方案: 因为click事件执行时间短,所以利用鼠标拖动的时间差作为标志,在拖拽事件中计算鼠标从onmousedown 到onmouseup 所用的

  • Vue中的@blur事件 当元素失去焦点时所触发的事件问题

    目录 Vue @blur事件 当元素失去焦点时所触发的事件 @blur 是什么? @blur 怎么使用? Vue 使用@blur无效 Vue @blur事件 当元素失去焦点时所触发的事件 @blur 是什么? @blur 是当元素失去焦点时所触发的事件 @blur 怎么使用? <template> <div> <input type="text" placeholder="请输入内容" @blur="blur"/&g

随机推荐