关于我写的IDEA插件能一键生成service,mapper....这件事(附源码)

本文介绍了如何开发一个IntelliJ IDEA插件,该插件能在新建实体类时自动生成关联的mapper、service等文件。作者分享了调研API的过程,包括创建输入类名弹窗、获取模板、获取目录信息等关键步骤,以及如何解决模板灵活性和文件生成目录的问题。通过阅读IDEA源码,实现了更高效便捷的文件生成操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最终效果

为了留住兄弟们继续看下去,还是先来看看最终效果吧

在新建一个实体类的时候把相关联的mapper、service都一并生成

当做出这个效果之后,面对一个结构复杂的DDD的项目,我再也不用新建一个实体类,新建一个mapper,新建一个service,新建一个model,再来一个转换类,再来一个。。。。。我想,这大概就是工业革命吧

难道逆向工程不香么?

什么?逆向工程能用来装逼么!谁能拒绝。。。

调研Api

当然可以上来就直接开搞,毕竟用模版生成文件这种操作,用java实现起来也不是什么难事。但是如果仅仅是实现一个简单的功能,就很难提起兴致。如果在研究兴趣的同时,还能提高一些专业能力的话,岂不美哉

那我们来分析一下,针对这个点子,需要做的事情其实很少

  1. 找到需要生成文件目录
  2. 创建一些模版
  3. 把文件生成过去

但是事情往往没有想象中这么简单

  1. 这些目录找起来并不轻松,在一个陌生的项目环境下,直接通过文件系统找文件目录总是不那么靠谱
  2. 直接在插件中写死模版当然很简单,但是损失了不小的灵活性,总不能每次新建一个项目就去把插件发一个版本
  3. 生成文件的话其实问题不大,但是总觉得用原生的硬搞不是特别优雅,既然我们在IDEA的地盘做事,就要尽量按照他的风格来,应该也可以得到一些便利

针对这些问题,我的选择当然是去看IDEA的源码了,既做插件,又能锻炼阅读源码的能力,一菜多吃!

既然这次主要是文件生成操作,首先肯定是关注创建Class这个Action,大家都是新建文件,只是目录不同,在这个Action中肯定可以找到很多线索。

总之,最后定位到了CreateClassAction这个类,源码我就不全都截出来给大家了,具体的逻辑部分有兴趣的兄弟可以自己去自己研究一下,只说我这边研究得到的线索

创建输入类名的弹窗

这个类中有一个比较有用的方法CreateClassAction. buildDialog(Project project, PsiDirectory directory,CreateFileFromTemplateDialog.Builder builder)

protected void buildDialog(final Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) {
    builder.setTitle(JavaBundle.message("action.create.new.class", new Object[0])).addKind(JavaPsiBundle.message("node.class.tooltip", new Object[0]), PlatformIcons.CLASS_ICON, "Class"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值