基于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

相关文章

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

MySQL 5.7彻底卸载与重新安装保姆级教程(附常见问题解决)

《MySQL5.7彻底卸载与重新安装保姆级教程(附常见问题解决)》:本文主要介绍MySQL5.7彻底卸载与重新安装保姆级教程的相关资料,步骤包括停止服务、卸载程序、删除文件和注册表项、清理环境... 目录一、彻底卸载旧版本mysql(核心步骤)二、MySQL 5.7重新安装与配置三、常见问题解决总结废话不多

交换机救命命令手册! 思科交换机排障命令汇总指南

《交换机救命命令手册!思科交换机排障命令汇总指南》在交换机配置与故障排查过程中,总会遇到那些“关键时刻靠得住的命令”,今天我们就来分享一份思科双实战命令手册... 目录1. 基础系统诊断2. 接口与链路诊断3. L2切换排障4. L3路由与转发5. 高级调试与日志6. 性能与QoS7. 安全与DHCP8.

故障定位快人一步! 华为交换机排障命令汇总

《故障定位快人一步!华为交换机排障命令汇总》在使用华为交换机进行故障排查时,首先需要了解交换机的当前状态,通过执行基础命令,可以迅速获取到交换机的系统信息、接口状态以及配置情况等关键数据,为后续的故... 目录基础系统诊断接口与链路诊断L2切换排障L3路由与转发高级调试与日志性能、安全与扩展IT人无数次实战

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave