snow0617 2022-02-17 13:39 采纳率: 100%
浏览 60
已结题

java 怎么通过配置的方法实现:不同实体对象的转换?(字段名称,类型,实体结构都不相同,,)

目前在做工号的数据的同步,从原系统把工号同步到本系统,但对接的项目有很多,不同的项目同步工号的入参实体类结构、字段名称、字段类型与本系统都不相同。
想通过一些配置化的方法把字段对应关系、实体对应关系通过一种方式映射封装解析成符合本系统的统一数据实体类型(应该会用到反射),这样统一了数据模型,之后就可以统一执行后边数据解析校验落表的过程,不用区分不同的系统去分开做不同的数据处理解析和校验了。
但因为字段名称,类型,甚至实体结构可能都完全不同,感觉实现起来很繁琐也很困难,已经百度了一些方法但觉得都不太可行,想问下大家有什么经验或者建议和更好的思路方法么?
例:

源数据sourceUser实体:
{
    "body":{
        "data":{
            "userId":"1100",
            "userName":"张三",
            "telPhone":"13450000000",
            "orgId":"123"
        }
    }
}
目标数据targetStaff实体:
{
    "staff":{
        "staffId":1100,
        "staffName":"张三",
        "tel":"13450000000",
        "orgId":"123"
    }
}

最终实现效果是想:提前将实体对应关系以及实体中的字段对应关系配置好(如sourceUser对应targetStaff实体,userId字段对应staffId字段,但id类型不一致需要转换成targetStaff的参数类型),代码通过这些配置信息,能够自动把sourceUser实体转换为targetStaff实体,也要考虑到字段类型不一致时如何统一成目标实体字段类型的问题。

  • 写回答

1条回答 默认 最新

  • 大鹏cool Java领域优质创作者 2022-02-17 13:59
    关注

    还真有这样的工具,mapstruct,官网

    有帮忙麻烦给个采纳哦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 创建了问题 2月17日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵