基于grpc从零开始搭建一个准生产分布式应用(6) - 06 - MapStruct常见问题汇总

本文主要是介绍基于grpc从零开始搭建一个准生产分布式应用(6) - 06 - MapStruct常见问题汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、Unknown property "discount" in result type TestMixBO. Did you mean "null"?可能有以种原因:

  1. 属性名写错了;
  2. maven中的编译插件中lombok的配置配置在了mapstrut之后,导致lombok注解没有执行;

2、Unknown property "discount" in result type TestMixBO. Did you mean "discountG"?

BO类中属性名和setter/getter方法名称不匹配,这个一般是由人工修改引起的;

3、No property name "discount" exsits in source parameter(s).Did you mean "discountG"?

BO类中属性名和setter/getter方法名称不匹配,这个一般是由人工修改引起的;

4、支持几种lombok注解

@Builder、@AllArgsConstructor

5、用异常代替非空验证?

非空验证时可以不指定@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)属性,直接使用@Mapper

6、proto映射时集合为啥总为空?

原因是proto会把repeat修饰的变量后面默认给加上List后缀。所以映射时需特殊指定一下,如下:

List<WorkflowDto> toDtos(List<WorkflowBo> var1);@Mapping(source = "children", target = "childrenList")
WorkflowDto toDto(WorkflowBo var1);
7、Timestamp转date时时间会多8小时
@JsonFormat(pattern="yyyy-MM-dd",  timezone="GMT+8")@Datapublic static class  StudyDateRange implements Serializable {@JsonFormat(pattern="yyyy-MM-dd",  timezone="GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd")private Date start;@JsonFormat(pattern="yyyy-MM-dd",  timezone="GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd")private Date end;}
//这主要是时区问题引起的
@Mapping(target = "createdAt" , expression = "java(MapStructMapperUtil.dateToLocalDate(var1.getCtime()))" )
8、@AfterMapping
@AfterMapping
default void  setLicenseActivationInfoBo(@MappingTarget LicenseActivationRecordBo bo,  ActivationRecordEntity var1) {List<LicenseActivationInfoBo> activationInfo = JSONUtil.toList(var1.getActivationInfo(), LicenseActivationInfoBo.class);int accountTotal = 0;for(LicenseActivationInfoBo item: activationInfo) {accountTotal += item.getAccountLimit();}bo.setAccountLimit(accountTotal);bo.setActivationInfo(activationInfo);
}
9、proto通过优化定义节省传输大小
message MyMessage {//定义一个枚举enum DataType {StudentType = 0;WorkerType = 1;}//用data_type标识传的是那一个枚举DataType data_type = 1;//标示每次枚举类型最多只能出现其中的一个 节省空间oneof dataBody {Student student = 2;Worker worker = 3;}}

这篇关于基于grpc从零开始搭建一个准生产分布式应用(6) - 06 - MapStruct常见问题汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/2042

相关文章

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE