BeanMappingKey

An object mapping jetbrains plugin, it will automatically generate the get/set code between the two objects.

BeanMappingKey

GitHub Stars GitHub Forks GitHub Watchers

简体中文 | English

一键生成两个实体类之间的字段映射代码,用于代替 BeanUtil 与 MapStruct 等工具。


安装指南

  • Windows 系统上安装:
    • File > Settings > Plugins > Browse repositories… > Search for “BeanMappingKey” > Install Plugin
  • MacOS 系统上安装:
    • Preferences > Settings > Plugins > Browse repositories… > Search for “BeanMappingKey” > Install Plugin
  • 手动安装:
    • 下载 latest release 之后, 选择 Preferences > Plugins > Install plugin from disk…

注:暂且只支持 2020 以上版本的 IDEA,安装之后无需重启。


使用指南

在 Java 开发的过程中,经常会使用众多包装型的对象如:BO、VO、DTO,它们之间往往只有两三个字段的差异,
而对它们进行相互转换则是一项耗时耗力的体力活,所以 Java 生态中就衍生出了 BeanUtilMapStruct 这种工具,
然而 BeanUtil 无法查看对象转换细节,MapStruct 有时则会遇到对象转换不尽如人意的情况,此时你仍需手动编写对象转换代码。


BeanMappingKey 就是为了解决繁琐的手动对象转换而开发的,它(暂时)一共有三种用法:

  • 选中一个带有返回值和参数的方法,使用快捷键 Ctrl+M 或者右键点击 BeanMappingKey,
    就能自动插入相关转换代码。
  • 选中一个变量,使用快捷键 Ctrl+M 或者右键点击 BeanMappingKey,就能自动生成转换代码到粘贴板。
  • 选中一个类,使用快捷键 Ctrl+M 或者右键点击 BeanMappingKey,就能自动生成转换代码到粘贴板。

以上生成逻辑中,若有 Builder 内部类则优先生成 Builder 代码,其次生成 Set 型代码。

Tip: 在最新的 2.X 版本中,它连嵌套对象也可以生成了,比如一个 User 对象中包含了一个 Address 对象,
那么它将会将这两个对象都生成出来,并且自动赋值。


代码生成指南

仔细阅读代码生成指南可以帮助你理解本插件生成代码的逻辑,倘若你在使用中遇到问题可以更好的判断是插件问题还是用法问题。

Q1: 怎么判断一个类会生成 Builder 代码还是 Set 代码 ?

A: 如果此类中有一个以 Builder 结尾的内部类则会生成 Builder 代码,倘若没有则会生成 Set 型代码,
Set 型代码则是通过寻找类中以 SetXXX 开头的方法来判断的。

如果生成的类是一个嵌套对象,请务必保证父对象和子对象都是 Builder 代码 或者 Set 型代码,因为判断时只会通过父对象来判断,
如果父对象是 Builder 代码而子对象是 Set 型代码则在生成子对象代码时出现一些错误代码,如果这种情况无法避免,可以将生成的错误代码删除,再点击子对象类单独生成。

Q2: 通过方法参数和返回值进行代码生成时,是用什么逻辑做匹配 ?

A: 首先我会拿到所有方法参数,依次将他们的变量名取出,接着对返回值的变量名做匹配,所以是通过变量名匹配。

Q3: 在使用的过程中插件无反应,是什么问题 ?

A: 这时你可以留意 IDEA 右下角气泡提示,如果它提示是绿色则代表你生成成功,如果是红色且可以看到 BeanMapping 开头的提示语则代表选中的对象不支持生成,
如果你看到了一个红色气泡但是并没有 BeanMapping 开头的提示语而是一个 occurred error,这代表我的插件出现了问题,你可以给我提 Issues。

Tip: 当代码还没有编译完成或者 IDEA 还没有准备完成,这时使用插件也有可能得到一个错误,因为插件依赖 IDEA 内部的上下文环境。

Q4: 除了 Java,插件是否还支持其他语言 ?

A: 截止到 2.0 版本,本插件只支持 Java。


Issues 指南

如您在使用过程中,遇到了什么问题或者有良好的使用建议,可以通过提 issues 方式告知我,
issues 之前请先组织好您的语言,尽量详细,如果是问题类的 issues 则需要附上 IDEA 版本。

最后,欢迎 Star