idea对象转换插件ObjectConverter

前言

业务项目开发过程中,存在大量对象转换的地方,比如VO、DTO、Domain领域对象、PO、Request、Response等对象转换。当前转换的方式一般包括:

  1. 手写各个对象getset转换

  2. 利用MapSturct 注解,在编译后生成getset代码,可通过反编译class文件看到生成后代码

  3. 利用BeanUtils.copyProperties等运行时反射getset值

  4. BeanCopier等运行时操作字节码生成代码

第1个方式体力活比较耗时耗力。第2个是相对推荐的方式,性能好,但对象比较复杂时,需额外配置注解或仍需手工getset。第3,4等方式相对比较耗时,不太推荐大量使用。

基于现状,我研发了一个idea插件:ObjectConverter, 可以在研发阶段生成对象转换的getset代码,研发人员可根据生成后的代码微调后使用。

ObjectConverter

整体逻辑:

  • 安装插件后,插件弹出框,用户输入Source Class和Target Class,如果是当前类文件右键生成的,默认会把当前类路径作为Target Class的值。弹出插件的方式:

    • 文件右键Generte..或alt+ insert后,弹框中选择Object Converter,弹框中Source Class和Target Class分别填写转换的原始类和目标类。注意类需要包括包路径

    • idea工具栏的Tools下,选择Object Converter,弹框中Source Class和Target Class分别填写转换的原始类和目标类。注意类需要包括包路径。

  • 弹框确认后,生成Source Class和Target Class类的所有字段(包括嵌套对象)信息,Target Class的每个字段(包括字段类型是嵌套的其他类型)和Souce Class的所有字段做字段的相识度比较,获取相识度最大的字段作为该Target Class的字段set值。

    • 字段相识度如果低于70%,生成的set代码上面会增加注释:FIXME:Low matching rate, match ratio。

  • 生成的代码会生成一个java类文件,放到Target Class类的同级包路径下。文件命名:Target Class+Converter.java

    • 如果存在同名的java类文件,会提醒已存在不会覆盖已有文件

当前插件为版本1,不支持的功能:

  • Collection下List、Set、Queue等类型的嵌套解析;

  • 泛型类的处理;

  • 转换对象不一致是字段级别的类型处理。

后面空了会升级代码后放到github,以及上传官方插件库。当前插件如附件,使用过程如有疑问或建议可讨论。

下面是插件使用过程的示例:

附录

插件提供对象转换能力,解决手工编写大量转换对象代码的耗时耗力问题,作为辅助工具,生成后的代码需根据情况做微调后使用。使用过程有疑问欢迎探讨。

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
鉴于引用\[1\]和引用\[2\]提供了关于驼峰转换插件的信息,我可以回答你的问题。 关于IDEA驼峰转换插件,有两个推荐的快捷键可以使用。首先,你可以使用MAC系统的快捷键【定制:⌃ + ⌥ + ⌘ + P】来进行驼峰转换。这个插件不仅可以转换驼峰格式,还包括其他格式,比如SCREAMING_SNAKE_CASE、snake_case、kebab-case等等。你可以通过右键菜单来选择转换方式,但是为了提高效率,你也可以直接使用快捷键进行转换。\[1\] 另外,你还可以使用快捷键⇧ + ⌥ + U(Shift + Alt + U)来在kebab-case、SNAKE_CASE、PascalCase、camelCase、snake_case或space case之间轻松切换。你可以在编辑菜单中找到这个选项,也可以在首选项中禁用某些转换或更改它们的顺序。\[2\] 这些插件可以极大地提高你在工作中转换格式的效率,特别是当你需要批量转换数据格式时。希望这些信息对你有帮助! #### 引用[.reference_title] - *1* [IDEA插件之驼峰转换【String Manipulation】](https://blog.csdn.net/qq_30231473/article/details/129152668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [IDEA插件CamelCase插件——驼峰转换](https://blog.csdn.net/magic_818/article/details/129379427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值