Idea插件开发(三)——插件JSL的完整开发过程

Idea插件开发(一)——插件的分类及基础认识
Idea插件开发(二)——插件的创建打包及发布
Idea插件开发(三)——插件JSL的完整开发过程

上篇主要介绍了通过两种模式创建、打包、发布插件,本篇我将记录自己写的插件 JSL 完整的开发过程,插件开发也遵从软件开发流程,同样拥有开发周期和迭代升级的维护周期,当然这完全取决于开发者。

JSL(Jpa Sql Log)

插件开源地址
插件功能描述
  • 这是我开发的一个类似mybatis log plugin的插件,说到这儿应该很多人都能猜到是什么了,我简要的说明下:我们知道ORM映射框架有很多,比较出名的有MyBatis、Hibernate、SpringDataJpa、JdbcTemplate等,这里我就是针对Jpa开发的一个控制台Sql语句还原的插件。因为Jpa开启sql日志后输出的都是带问号的sql,这个缺点和mybatis一样,所以受到mybatis log plugin插件的启发,于是开发了Jpa Sql Log这个插件。
插件截图

在这里插入图片描述

插件实现功能

例1: 将 select * from table where _id=?转换为 select * from table where _id=1

例2: 将 update table set create_date=?, update_date=?, product_id=?, status=? where id=?转换为 update table set create_date=2020-07-01 11:48:12.0, update_date=2020-07-01 11:48:12.0, product_id=1, status=0 where id=1

实现思路

因为我是针对IDEA开发的,所以我以IDEA的界面来介绍插件开发思路。
在这里插入图片描述

  • 控制台根据工具栏的选择显示不同的内容,因此我的实现思路首先就是在工具栏放一个工具,取名JSL(Jpa Sql Log),当用户点击按钮时显示一个Console窗口,当Run窗口中的日志出现sql日志时将其和参数值拼接后输出到我的JSL窗口中。看起来很简单,实现起来也不复杂,只是在实现过程中遇到些问题找不到解决办法很花时间,所以才想记录下来。
    这里有一点,我们知道Java也有自己的界面编程API,即Java Swing,它允许用户编写带有按钮、输入框、表格等元素的窗口程序,其实这里我编写Console的窗口就是用Java Swing的JComponent组件,在其中放置了一个ConsoleView组件用于输出Text形式的内容。
配置插件触发入口

首先回顾一下插件包目录的内容:

└── plugins
    └── sample.jar
        ├── com/foo/...
        │   ...
        │   ...
        └── META-INF
            ├── plugin.xml
            ├── pluginIcon.svg
            └── pluginIcon_dark.svg

以下为插件JSL的目录:在这里插入图片描述

plugin.xml作为核心文件记录了整个插件的关键配置信息,首先就是插件触发入口,被称为Action,在plugin.xml如下配置(完整的plugin.xml文末记录):

<actions>
    <!-- Add your actions here -->
    <action id="cn.feelcode.jpa.JpaSqlLogAction" class="cn.feelcode.jpa.JpaSqlLogAction" text="jpa sql log"
            description="格式化jpa生成的log,拼接为标准sql语句" icon="/icons/logo2_1616.png">
        <add-to-group group-id="ConsoleView.PopupMenu" anchor="last"/>
    </action>
</actions>

Action可以有多个,在菜单栏,工具栏都可以添加,如上我注册了插件JSL的启动方式,Action包含一些基本属性,必须配置

  • id指定Action的标识
  • class指定Action的实现类
  • text表示文本的内容
  • description为描述
  • icon为图标路径
    添加add-to-group标签,指定触发插件的形式,group-id="ConsoleView.PopupMenu"表示在控制台右键中添加该Action,anchor表示位置,last就是放在最末尾,最终的效果如图:在这里插入图片描述

右键时菜单最后显示为我设置的内容,左下角显示了description信息。
触发方式有很多种,大概分三种:工具栏、菜单栏、快捷键。具体可以查看这里,下面会讲如何变更触发方式在这里插入图片描述

Groups包含了所有的触发形式,下方的keyboard shortcuts支持快捷键触发。
输入group-id后会有自动补全代码功能弹出选择项,此时可以更改触发方式

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值