请问大家在项目中是如何完成结构体之间的转换的,如: DTO --- VO
之前用 java 的时候是通过 mapStruct 做的,不知道 golang 有什么轻松地方式?
有一些赋值的轮子,类似这个: github.com/zywaited/xcopy,好像 go-zero 也提供了这种拷贝的库
蹲一个 java 中有什么轻松的方式
#2
mapStruct ,就是编译会变慢,不过个人感觉很好用
Java:
如果轻度使用=> HuTool
重度使用=>ModelMapper
手动 set 性能最高
用 protobuf 比较多,考虑过写个插件自动生产点转换代码,后来用上 GitHub copilot 后感觉没有需求了,copilot 基本能自动生成转换函数。
github.com/jinzhu/copier 挺可靠的
蹲一个 java 中有什么轻松的方式
以前用 BeanUtils ,现在手动 set 。
复杂业务多层转换之后,你不手动,全是这种转换,真的很难知道哪些字段有值哪些字段没值
手动 set 比较好,当你改了某些属性,编译会给你报错提示,BeanUtils 那些你无法感知到,后期维护痛苦
手写 Converter..
MapStruct
来点邪道的:代码生成
mapstruct
MapStruct + 1 +1
MapStruct + 1 +1 +1
github.com/jinzhu/copier +1
以前用 BeanUtils ,现在手动 set 。
以前用 BeanUtils,现在还在用 BeanUtils,只是有的时候改字段后会少赋值
当然是 copilot 生成啊,都不会写代码了现在
BeanUtils + 特殊的手动赋值
copilot 做这种事真的完美
BeanUtils + 特殊的手动赋值 + 1
手动 set 比较好,不然万一出错了,你找起来会比较麻烦
目前手里是十年左右的屎山和屎表,用手动 set ,手动 set 感觉方便查问题
为什么你们喜欢把结构体变来变去? DTO, VO 我感觉就是一个概念而已呀
我用万能的序列化 /反序列化来实现一个 convert 泛型方法,可以把任何对象转换为你指定的类型。至于转换的结果嘛,只要字段对的上就能转,对不上的就会丢掉。
万一把 xxx_password 字段序列化返回给视图,就不一样了
序列化的时候可以指定 ignore 字段
根源性避免这类风险
背景:发现自己没有较高质量的群 或者分享的地方 故想找一些可以分享技术,探讨技术的群, 目前个人 qq 群全是那些 什么语法错误,新人小白群, 当我有一些难一点的问题时候 没人…
现公司涨工资以职级提升为前提,另外,职级提升也不是一定会涨,还需要考虑其他因素,比如部门业绩等。 职级提升有严格的要求,比如,T7 以上必须会 JAVA 全家桶或者机器学习或者…
实战:随便找个项目用框架写一遍 原理:找点源码文章加工加工 都是嚼过好几遍的东西了,咋还能卖钱呢,我都没理解,什么框架要搭配一个课程才能用啊???新语言也不至于这么难吧。 关键…