从今天开始一步一步练习mybatis插件开发。
第一步是解析mapper文件,可以实现xml中按照id属性查找resultMap或者sql片段,鼠标点击跳转。
Dom操作Xml的基本只是可以参考之前的文章:IDEA插件开发(二)DOM操作XML文件
本文直接以mybatis的mapper文件解析为例,说明Dom操作的常用写法。
从今天开始一步一步练习mybatis插件开发。
第一步是解析mapper文件,可以实现xml中按照id属性查找resultMap或者sql片段,鼠标点击跳转。
Dom操作Xml的基本只是可以参考之前的文章:IDEA插件开发(二)DOM操作XML文件
本文直接以mybatis的mapper文件解析为例,说明Dom操作的常用写法。
公开密钥加密使用一对非对称的密钥。一把叫做 私有密钥(private key),另一把叫做 公开密钥(public key)。
顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。
使用公开密钥机密方式,发送密文的一方使用对方的公开密钥进行机密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
你的插件可能会依赖其他插件,内置的、第三方的或者你自己的。为了引入这些依赖,需要执行如下步骤:
plugins/<pluginname>
或者plugins/<pluginname>/lib
目录下。如果是非内置插件,那么插件jar包在Sandbox Home
指定的目录下的config/plugins/<pluginname>
或者config/plugins/<pluginname>/lib
内。<depends>
标签到plugin.xml
中,将插件的ID作为标签值。如果不知道插件的ID,可以到指定插件的plugin.xml
中查看。IDEA平台提供service
的概念。一个Service
组件是单例的,使用ServiceManager
的getService
方法获取。Service
可以是一个类,也可以是一个接口,但如果是接口,必须有实现类。
很多插件都需要提供用户配置参数的入口,这里以free-mybatis-plugin
插件为例,我们想要用户配置方法匹配模版,例如dao层中insert
,add
等关键字开头的方法在mapper中生成insert
语句。
IDEA提供扩展点的概念,这样我们可以跟其他插件或者IDEA本身交互,例如对IDEA功能进行扩展。
假如我们有一个xml文件如下:
我们想读取第二个bar元素的值239,我们可能会直接这样写:
但这样是很危险的,因为任何一个元素都可能产生空指针。所以需要这样写:
这样的写法看起来很臃肿,有一种更好的方案是使用DOM。
官方推荐使用社区版IDEA开发插件,因为方便调试核心代码。
You may use IntelliJ IDEA Ultimate as an alternative, but debugging the core code will only work with the Community Edition.
我下载的版本是
那么在IntelliJ IDEA Community Edition 下载对应版本的源码,解压后为intellij-community-182.4505
。
λ表达式本质上是一个匿名方法。让我们来看下面这个例子:
转成λ表达式后是这个样子:
参数类型也可以省略,Java编译器会根据上下文推断出来:
或者
可见λ表达式有三部分组成:参数列表,箭头(->
),以及一个表达式或语句块。
下面这个例子里的λ表达式没有参数,也没有返回值(相当于一个方法接受0个参数,返回void
,其实就是Runnable
里run
方法的一个实现):
如果只有一个参数且可以被Java推断出类型,那么参数列表的括号也可以省略: