前言:IDEA有着非常强大的代码生成功能。通过这个功能,我们可以很便捷的生成javaDoc,也可以通过输入简短的代码缩写而输出完整代码,比如输入sout的时候就会自动生成"System.out.println();"。如何才能自定义设置代码生成呢?今天就来简单总结一下。
就我目前所知道的,IDEA的代码生成大致有四种:创建文件时生成、实时模板生成、第三方代码生成器以及我们所熟知的"Alt+Insert生成",四个方法各有其使用场景。
创建文件时生成
对应设置的位置如下:
凡是在这里设置的代码模板,都会在文件创建时自动生成。在右边的选项框中,有三个子菜单,分别是File、Includes、Code、Other,这里我主要说一下我们经常使用的File与Include
File菜单是以文件类型划分,在使用IDEA创建某种格式的文件时,就是从这个模板中生成,这也就解释了为什么IDEA会根据文件类型生成相应的基础代码。强调一点,这里的模板不要轻易的修改,如果不小心删除了某些关键代码,可能会出现无法生成对应文件的现象。
那我们可以通过它干什么呢?我想到了两点:
自定义文件模板
比如在使用Mybatis时需要生成很多的XXXMapper.xml文件,不经过设置的话我们只能先创建一个空的xml文件,然后再手动敲或者复制各种标签,十分麻烦。
我们就可以手动添加一个有关mapper文件的xml模板,省去不少麻烦。具体步骤如下:
之后每当我们想要创建mapper文件时就可以选择它,自动生成代码结构:
创建java文件时自动生成类注释
首先展示一下效果,比如创建一个student类,文件生成后的效果如图:
做到这种效果其实很简单,不过在设置前先要说一个Include选项,如下:
按照我的理解,Include选项里的模板是对Files文件模板的抽象,即某些Files文件模板的共有部分,也即Files里的模板可以引用Include选项中的模板,就拿创建java文件时自动生成类注释说吧。
从上图可以看到一个叫做File Header的模板,这个模板是IDEA自带的,翻译过来应该就是文件头部代码的意思吧。我们可以将其设置成如下格式:
/**
* @author: ${USER}
* @create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
* @description: ${description}
**/
就是一个注释模板,指明了作者、创建时间、以及描述的信息,当然也可以设置其他信息,只需要加入一个个的${XXX}就行了,设置属性的话代码框下面的Description里就有。
然后依次点击Files
、Class
,在public class ${NAME}
上方输入#parse("File Header.java")
(如果该语句请忽略本操作),从而引入我们刚刚编写好的File Header。然后再依次对Interface、Enum等各类模板进行相同设置。
这样就大功告成了,以后每当我们创建java文件就会自动生成类注释了。
实时生成
第一种代码生成方案固然很好使,但并不能解决所有问题,因为我们在工作中不仅需要生成类注释,还有方法注释、甚至是属性注释啊。
不用担心,对于这个问题,IDEA也给我们想到了,那就是Live Templates。下面就以自动生成方法注释为例
自动生成方法注释
IDEA主页面输入Ctrl+Alt+S进入设置页面,依次点击Live Templates和Template Group:
Template Group表示添加一个模板组,Live Template表示添加一个实时模板, 我们先创建一个自己的模板组,再在其中创建我们自己的模板,当然也可以不创建模板组,直接在已有的模板组中创建。模板组名自定义,我这里起MySelf
然后点击右边的小加号,点击Live Template
输入模板名及描述,为了方便使用,名字尽量不要设置太长,这里设置为m
然后点击上图的Define,选择java,表示这个模板作用在java文件中
然后将以下代码复制到代码框,Expand with选择Tap,即以tap方式触发
*
* @description: $description$
* @author: $user$
* @create: $date$
* @param: $params$
* @return $return$
**/
然后点击Exit varialbles,进行参数映射,设置如下:
其中,params选项的Expression为:
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split('<').toList(); for(i = 0; i < params.size(); i++) {if(i!=0){result+='<';}; def p1=params[i].split(',').toList(); for(i2 = 0; i2 < p1.size(); i2++) { def p2=p1[i2].split('\\\\.').toList(); result+=p2[p2.size()-1]; if(i2!=p1.size()-1){result+=','} } ; }; return result", methodReturnType())
之后点击OK、Apply即可设置成功!
现在,在任意java方法上都可以使用该模板,触发输入是:/*模板名
,我这里就是/*m
,然后再点击Tab键即可生成注释
效果如下所示:
/**
* @description: 这是一个XXX方法
* @author: OnlyOne
* @create: 2020/8/26
* @param: [param1, param2]
* @return Long
**/
public Long method(Integer param1, Integer param2) {
return id;
}
如果想更改模板,可以参考一下内容:
https://blog.csdn.net/u014044812/article/details/76577479
Alt+Insert代码生成
相信这种方法无需多言,大家基本上每天都在用的一种代码生成方法。但为了照顾纯小白,也在这里列出:
键盘按下Alt+Insert,然后选择要生成的代码:
第三方代码生成
第三方代码生成方案那就太多了,有的是Idea插件,有的是代码生成器,不如Mybatis Plus代码生成器。这里就不一一赘述,想要了解的话就请自行百度吧。