跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 分享一个 Javabean 拷贝工具
未分類
4 12 月 2020

分享一个 Javabean 拷贝工具

分享一个 Javabean 拷贝工具

資深大佬 : KeroZhai 2

由于项目中需要根据条件返回 PO 中不同的字段,但又不想定义多个 VO 类,于是我就从自身需求出发,完成了下面这个 Javabean 拷贝工具。

仓库地址在这里,希望能给大家带来一点点微小的帮助,也希望大家可以提提建议,甚至帮助改进,大佬们请轻喷。

大佬有話說 (14)

  • 資深大佬 : callofmx

    https://mapstruct.org/

  • 主 資深大佬 : KeroZhai

    @callofmx 感谢回复,大概看了下,它要解决的问题应该和我是一致的,不过个人觉得可能我的用法会更简单灵活一点,特别是对字段的条件拷贝这方面,不需要定义额外的 Mapper 。

  • 資深大佬 : tcfenix

    @KeroZhai 记得之前使用最广的是 cglib 的 bean copier, 有很多使用了的项目,时间跨度都很广, 是经得住考验工具

    扫了一下,你的大致逻辑跟他比较接近,都是反射实现加上缓存 converter, 不知道具体的实现上有没有啥区别?

  • 主 資深大佬 : KeroZhai

    @tcfenix 谢谢您的回复,Beancopier 我了解的不是很多,只知道它的性能可媲美直接使用 getters/setters,另外好像是浅拷贝?因为我的实现中基本类型、Date 以及 Collection 都是直接支持的,并且是递归深拷贝,一般情况下是不需要 Converter 的,只有想实现一些特殊需求的时候可以配置,例如 README 中举例的时间戳转 Date 对象。

  • 資深大佬 : beitayongguo

    orika 用着还挺好的,也是字节码框架实现的

  • 主 資深大佬 : KeroZhai

    @beitayongguo 谢谢推荐,不过感觉需要额外配置 Mapper 的话稍微有点繁琐,当然如果要是比性能我这个就完败了…不管怎样,希望能点个 Star 支持下哈哈。

  • 資深大佬 : xuanbg

    序列化+反序列化就完了,要什么自行车

  • 主 資深大佬 : KeroZhai

    @xuanbg 是,主要是有条件拷贝不同字段的需求,而且两边字段类型名称都可能不同,比如 UserPo -> UserDTO,UserPO 内又有 List<RolePO>,而 UserDTO 内对应的是 List<RoleDTO> 这样。

  • 資深大佬 : paragon

    其实 spring beanutils 足够应付大多数这种场景了

  • 資深大佬 : xuanbg

    @KeroZhai 那么字段怎么对应呢?搞个 map 传进去么?有写这个 map 的美国功夫,我 new 一个目标对象出来手动 set 一下就完了。

  • 主 資深大佬 : KeroZhai

    @xuanbg 默认根据字段名来对应的,一般使用上不需要配置啥,只是需要声明一些条件,并在拷贝时指定这些条件,来决定这次拷贝要忽略哪些字段或是采取哪种策略来忽略它们。如果你使用的是 JPA 的话,应该知道关联关系可能嵌套好几层,特别是关联集合,如果全部手动 set 可能不太现实。当然如果没有这个需要的话,确实价值意义不大…

  • 主 資深大佬 : KeroZhai

    @paragon 不过它也是浅拷贝吧,像是关联查询出来“用户-角色-权限”三种实体类,再转为 VO 的时候应该就没办法了。不过其实个人觉得我这个重点不是递归深拷贝,主要是按条件拷贝以及指定如何忽略 null 和空值两个功能比较方便,对我来说很有用…

  • 資深大佬 : syozzz

    dozer?

  • 主 資深大佬 : KeroZhai

    @syozzz 感谢回复,说实话一下子知道了好多拷贝工具…了解了一下确实挺强大的,不过正如我前面提到的,我觉得使用 XML 去配置映射有点麻烦,更倾向于使用注解。还有就是希望能尽量复用一个类,根据一定的条件选择要拷贝哪些字段,这个可能是对我来说这个工具最主要想解决的问题吧。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具