场景:mybatis里的mapper文件需要生成if条件,先看效果
一键生成
下面来看具体设置:
首先点击打开Code-Surround With-Configure Live Templates
先选择Tempate Group添加一个自定义分组,这里存在你的自定义生成脚本
然后选中新增的分组,点击Live Template添加脚本
添加完成后在下方写入想要一键生成的内容,这里是想要生成sql的if判断语句,下面解释一下各个变量的含义
$SELECTION$是系统预设变量,表示光标选中选择内容,如果没选选中内容,则自动全选光标所在行内容
$sqlparam$是自定义变量,可以随便命名
写好以后点击 Edit variables,需要注意的是,如果不先定义自定义变量,按钮是灰色不可点状态
定义了$sqlparam$后:
点击后,会发现刚刚定义的变量已经在里面,那么问题来的,怎么赋值给自定义变量呢?
我们思考一下会发现,一般mapper文件里写法都是#{abName}这种,那么我可以以此为切入点,去截取所需的字符串
IDEA的模板支持groovyScript脚本,我们只需在Expression写入脚本即可!
Skip if defined表示生成后,不会保留编辑状态,一般勾上即可
脚本解析:
SELECTION等价于$SELECTION$即光标选择文本信息
${_1}就是传入的变量,即这里这里是SELECTION
groovyScript("def result=\"${_1}\";return result.substring(result.indexOf(\"#{\")+2,result.indexOf(\"}\"))", SELECTION)
ok...大功告..等等,为什么打开Surround With没有我们刚才新增的模板?
还差了最后一步,把模板的使用场景勾上就好啦,这样模板只会在特定后缀的文件里才会出现
这是IDEA一个非常实用的小技巧,这里举得例子非常简单,起到一个抛砖引玉的作用,事实上,在熟练学习groovyScript后,模板可以生成更复杂更强大的代码!各位就自行发挥自己的想象力啦