IDEA配置之模板代码生成

前言:IDEA有着非常强大的代码生成功能。通过这个功能,我们可以很便捷的生成javaDoc,也可以通过输入简短的代码缩写而输出完整代码,比如输入sout的时候就会自动生成"System.out.println();"。如何才能自定义设置代码生成呢?今天就来简单总结一下。

就我目前所知道的,IDEA的代码生成大致有四种:创建文件时生成、实时模板生成、第三方代码生成器以及我们所熟知的"Alt+Insert生成",四个方法各有其使用场景。

创建文件时生成

对应设置的位置如下:

image-20200826141715597

凡是在这里设置的代码模板,都会在文件创建时自动生成。在右边的选项框中,有三个子菜单,分别是File、Includes、Code、Other,这里我主要说一下我们经常使用的File与Include

File菜单是以文件类型划分,在使用IDEA创建某种格式的文件时,就是从这个模板中生成,这也就解释了为什么IDEA会根据文件类型生成相应的基础代码。强调一点,这里的模板不要轻易的修改,如果不小心删除了某些关键代码,可能会出现无法生成对应文件的现象。

那我们可以通过它干什么呢?我想到了两点:

自定义文件模板

比如在使用Mybatis时需要生成很多的XXXMapper.xml文件,不经过设置的话我们只能先创建一个空的xml文件,然后再手动敲或者复制各种标签,十分麻烦。

我们就可以手动添加一个有关mapper文件的xml模板,省去不少麻烦。具体步骤如下:

image-20200826144549343

之后每当我们想要创建mapper文件时就可以选择它,自动生成代码结构:

image-20200826144727069
image-20200826144839059

创建java文件时自动生成类注释

首先展示一下效果,比如创建一个student类,文件生成后的效果如图:

image-20200826145223499

做到这种效果其实很简单,不过在设置前先要说一个Include选项,如下:

image-20200826145345581

按照我的理解,Include选项里的模板是对Files文件模板的抽象,即某些Files文件模板的共有部分,也即Files里的模板可以引用Include选项中的模板,就拿创建java文件时自动生成类注释说吧。

从上图可以看到一个叫做File Header的模板,这个模板是IDEA自带的,翻译过来应该就是文件头部代码的意思吧。我们可以将其设置成如下格式:

/**
* @author: ${USER}
* @create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
* @description: ${description}
**/

就是一个注释模板,指明了作者、创建时间、以及描述的信息,当然也可以设置其他信息,只需要加入一个个的${XXX}就行了,设置属性的话代码框下面的Description里就有。

然后依次点击FilesClass,在public class ${NAME}上方输入#parse("File Header.java")(如果该语句请忽略本操作),从而引入我们刚刚编写好的File Header。然后再依次对Interface、Enum等各类模板进行相同设置。

image-20200826150614143

这样就大功告成了,以后每当我们创建java文件就会自动生成类注释了。

实时生成

第一种代码生成方案固然很好使,但并不能解决所有问题,因为我们在工作中不仅需要生成类注释,还有方法注释、甚至是属性注释啊。

不用担心,对于这个问题,IDEA也给我们想到了,那就是Live Templates。下面就以自动生成方法注释为例

自动生成方法注释

IDEA主页面输入Ctrl+Alt+S进入设置页面,依次点击Live Templates和Template Group:

image-20200826152100143

Template Group表示添加一个模板组,Live Template表示添加一个实时模板, 我们先创建一个自己的模板组,再在其中创建我们自己的模板,当然也可以不创建模板组,直接在已有的模板组中创建。模板组名自定义,我这里起MySelf

image-20200826152516695

然后点击右边的小加号,点击Live Template

image-20200826152647846

输入模板名及描述,为了方便使用,名字尽量不要设置太长,这里设置为m

image-20200826165227241

然后点击上图的Define,选择java,表示这个模板作用在java文件中

image-20200826153054322

然后将以下代码复制到代码框,Expand with选择Tap,即以tap方式触发

*
 * @description: $description$
 * @author: $user$
 * @create: $date$
 * @param: $params$       
 * @return $return$
 **/

image-20200826164734667

然后点击Exit varialbles,进行参数映射,设置如下:

image-20200826165314441

其中,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;
}

如果想更改模板,可以参考一下内容:

Idea中文文档

https://blog.csdn.net/u014044812/article/details/76577479

Alt+Insert代码生成

相信这种方法无需多言,大家基本上每天都在用的一种代码生成方法。但为了照顾纯小白,也在这里列出:

键盘按下Alt+Insert,然后选择要生成的代码:

image-20200826170445922

第三方代码生成

第三方代码生成方案那就太多了,有的是Idea插件,有的是代码生成器,不如Mybatis Plus代码生成器。这里就不一一赘述,想要了解的话就请自行百度吧。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342