{"id":13678565,"url":"https://github.com/rookie-ricardo/BeanMappingKey","last_synced_at":"2025-04-29T15:31:56.904Z","repository":{"id":41562521,"uuid":"437323014","full_name":"rookie-ricardo/BeanMappingKey","owner":"rookie-ricardo","description":"An object mapping jetbrains plugin, it will automatically generate the get/set code between the two objects.","archived":false,"fork":false,"pushed_at":"2022-12-05T12:44:59.000Z","size":110,"stargazers_count":67,"open_issues_count":0,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-08-02T13:23:36.910Z","etag":null,"topics":["java","jetbrains-ides","jetbrains-plugin","plugins"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rookie-ricardo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-11T15:47:33.000Z","updated_at":"2024-07-06T06:38:02.000Z","dependencies_parsed_at":"2023-01-24T05:31:33.137Z","dependency_job_id":null,"html_url":"https://github.com/rookie-ricardo/BeanMappingKey","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookie-ricardo%2FBeanMappingKey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookie-ricardo%2FBeanMappingKey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookie-ricardo%2FBeanMappingKey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rookie-ricardo%2FBeanMappingKey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rookie-ricardo","download_url":"https://codeload.github.com/rookie-ricardo/BeanMappingKey/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224178929,"owners_count":17268973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","jetbrains-ides","jetbrains-plugin","plugins"],"created_at":"2024-08-02T13:00:55.282Z","updated_at":"2024-11-11T21:30:39.651Z","avatar_url":"https://github.com/rookie-ricardo.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003eBeanMappingKey\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca title=\"GitHub Stars\" target=\"_blank\" href=\"https://github.com/rookie-ricardo/BeanMappingKey/stargazers\"\u003e\u003cimg alt=\"GitHub Stars\" src=\"https://img.shields.io/github/stars/rookie-ricardo/BeanMappingKey.svg?label=Stars\u0026style=social\"\u003e\u003c/a\u003e  \n  \u003ca title=\"GitHub Forks\" target=\"_blank\" href=\"https://github.com/rookie-ricardo/BeanMappingKey/network/members\"\u003e\u003cimg alt=\"GitHub Forks\" src=\"https://img.shields.io/github/forks/rookie-ricardo/BeanMappingKey.svg?label=Forks\u0026style=social\"\u003e\u003c/a\u003e\n  \u003ca title=\"GitHub Watchers\" target=\"_blank\" href=\"https://github.com/rookie-ricardo/BeanMappingKey/watchers\"\u003e\u003cimg alt=\"GitHub Watchers\" src=\"https://img.shields.io/github/watchers/rookie-ricardo/BeanMappingKey.svg?label=Watchers\u0026style=social\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n  \u003ca title=\"简体中文\" href=\"#\"\u003e简体中文\u003c/a\u003e | \u003ca title=\"English\" href=\"README_EN.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e  \n  一键生成两个实体类之间的字段映射代码，用于代替 BeanUtil 与 MapStruct 等工具。\n  \u003cbr\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\n## 安装指南\n\n- 在 `Windows` 系统上安装:\n    - \u003ckbd\u003eFile\u003c/kbd\u003e \u003e \u003ckbd\u003eSettings\u003c/kbd\u003e \u003e \u003ckbd\u003ePlugins\u003c/kbd\u003e \u003e \u003ckbd\u003eBrowse repositories...\u003c/kbd\u003e \u003e \u003ckbd\u003eSearch for \"BeanMappingKey\"\u003c/kbd\u003e \u003e \u003ckbd\u003eInstall Plugin\u003c/kbd\u003e\n- 在 `MacOS` 系统上安装:\n    - \u003ckbd\u003ePreferences\u003c/kbd\u003e \u003e \u003ckbd\u003eSettings\u003c/kbd\u003e \u003e \u003ckbd\u003ePlugins\u003c/kbd\u003e \u003e \u003ckbd\u003eBrowse repositories...\u003c/kbd\u003e \u003e \u003ckbd\u003eSearch for \"BeanMappingKey\"\u003c/kbd\u003e \u003e \u003ckbd\u003eInstall Plugin\u003c/kbd\u003e\n- 手动安装:\n    - 下载 [latest release](https://github.com/rookie-ricardo/BeanMappingKey/releases/latest) 之后， 选择 \u003ckbd\u003ePreferences\u003c/kbd\u003e \u003e \u003ckbd\u003ePlugins\u003c/kbd\u003e \u003e \u003ckbd\u003eInstall plugin from disk...\u003c/kbd\u003e\n\n注：暂且只支持 2020 以上版本的 IDEA，安装之后无需重启。\n\n\u003cbr/\u003e\n\n## 使用指南\n\n在 Java 开发的过程中，经常会使用众多包装型的对象如：BO、VO、DTO，它们之间往往只有两三个字段的差异， \n而对它们进行相互转换则是一项耗时耗力的体力活，所以 Java 生态中就衍生出了 `BeanUtil` 与 `MapStruct` 这种工具，\n然而 `BeanUtil` 无法查看对象转换细节，`MapStruct` 有时则会遇到对象转换不尽如人意的情况，此时你仍需手动编写对象转换代码。\n\n\u003cbr/\u003e\n\nBeanMappingKey 就是为了解决繁琐的手动对象转换而开发的，它（暂时）一共有三种用法：\n\n- 选中一个带有返回值和参数的方法，使用快捷键 `Ctrl+M` 或者右键点击 BeanMappingKey，\n就能自动插入相关转换代码。\n- 选中一个变量，使用快捷键 `Ctrl+M` 或者右键点击 BeanMappingKey，就能自动生成转换代码到粘贴板。\n- 选中一个类，使用快捷键 `Ctrl+M` 或者右键点击 BeanMappingKey，就能自动生成转换代码到粘贴板。\n\n以上生成逻辑中，若有 `Builder` 内部类则优先生成 `Builder` 代码，其次生成 `Set` 型代码。\n\nTip: 在最新的 2.X 版本中，它连嵌套对象也可以生成了，比如一个 `User` 对象中包含了一个 `Address` 对象，\n那么它将会将这两个对象都生成出来，并且自动赋值。\n\n\u003cbr/\u003e\n\n## 代码生成指南\n\n仔细阅读代码生成指南可以帮助你理解本插件生成代码的逻辑，倘若你在使用中遇到问题可以更好的判断是插件问题还是用法问题。\n\n\n**Q1: 怎么判断一个类会生成 `Builder` 代码还是 `Set` 代码 ?**\n\nA: 如果此类中有一个以 `Builder` 结尾的内部类则会生成 `Builder` 代码，倘若没有则会生成 `Set` 型代码，\n`Set` 型代码则是通过寻找类中以 SetXXX 开头的方法来判断的。\n\n如果生成的类是一个嵌套对象，请务必保证父对象和子对象都是 `Builder` 代码 或者 `Set` 型代码，因为判断时只会通过父对象来判断，\n如果父对象是 `Builder` 代码而子对象是 `Set` 型代码则在生成子对象代码时出现一些错误代码，如果这种情况无法避免，可以将生成的错误代码删除，再点击子对象类单独生成。\n\n\n**Q2: 通过方法参数和返回值进行代码生成时，是用什么逻辑做匹配 ?**\n\nA: 首先我会拿到所有方法参数，依次将他们的变量名取出，接着对返回值的变量名做匹配，所以是通过变量名匹配。\n\n\n**Q3: 在使用的过程中插件无反应，是什么问题 ?**\n\nA: 这时你可以留意 `IDEA` 右下角气泡提示，如果它提示是绿色则代表你生成成功，如果是红色且可以看到 `BeanMapping` 开头的提示语则代表选中的对象不支持生成，\n如果你看到了一个红色气泡但是并没有 `BeanMapping` 开头的提示语而是一个 `occurred error`，这代表我的插件出现了问题，你可以给我提 Issues。\n\nTip: 当代码还没有编译完成或者 `IDEA` 还没有准备完成，这时使用插件也有可能得到一个错误，因为插件依赖 `IDEA` 内部的上下文环境。\n\n\n**Q4: 除了 Java，插件是否还支持其他语言 ?**\n\nA: 截止到 2.0 版本，本插件只支持 Java。\n\n\u003cbr/\u003e\n\n## Issues 指南\n\n如您在使用过程中，遇到了什么问题或者有良好的使用建议，可以通过提 `issues` 方式告知我，\n提 `issues` 之前请先组织好您的语言，尽量详细，如果是问题类的 `issues` 则需要附上 `IDEA` 版本。\n\n最后，欢迎 **Star** 。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frookie-ricardo%2FBeanMappingKey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frookie-ricardo%2FBeanMappingKey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frookie-ricardo%2FBeanMappingKey/lists"}