前言:IDEA有著非常強大的代碼生成功能。通過這個功能,我們可以很便捷的生成javaDoc,也可以通過輸入簡短的代碼縮寫而輸出完整代碼,比如輸入sout的時候就會自動生成"System.out.println();"。如何才能自定義設置代碼生成呢?今天就來簡單總結一下。
就我目前所知道的,IDEA的代碼生成大致有四種:創(chuàng)建文件時生成、實時模板生成、第三方代碼生成器以及我們所熟知的"Alt+Insert生成",四個方法各有其使用場景。
創(chuàng)建文件時生成
對應設置的位置如下:
凡是在這里設置的代碼模板,都會在文件創(chuàng)建時自動生成。在右邊的選項框中,有三個子菜單,分別是File、Includes、Code、Other,這里我主要說一下我們經(jīng)常使用的File與Include
File菜單是以文件類型劃分,在使用IDEA創(chuàng)建某種格式的文件時,就是從這個模板中生成,這也就解釋了為什么IDEA會根據(jù)文件類型生成相應的基礎代碼。強調(diào)一點,這里的模板不要輕易的修改,如果不小心刪除了某些關鍵代碼,可能會出現(xiàn)無法生成對應文件的現(xiàn)象。
那我們可以通過它干什么呢?我想到了兩點:
自定義文件模板
比如在使用Mybatis時需要生成很多的XXXMapper.xml文件,不經(jīng)過設置的話我們只能先創(chuàng)建一個空的xml文件,然后再手動敲或者復制各種標簽,十分麻煩。
我們就可以手動添加一個有關mapper文件的xml模板,省去不少麻煩。具體步驟如下:
之后每當我們想要創(chuàng)建mapper文件時就可以選擇它,自動生成代碼結構:
創(chuàng)建java文件時自動生成類注釋
首先展示一下效果,比如創(chuàng)建一個student類,文件生成后的效果如圖:
做到這種效果其實很簡單,不過在設置前先要說一個Include選項,如下:
按照我的理解,Include選項里的模板是對Files文件模板的抽象,即某些Files文件模板的共有部分,也即Files里的模板可以引用Include選項中的模板,就拿創(chuàng)建java文件時自動生成類注釋說吧。
從上圖可以看到一個叫做File Header的模板,這個模板是IDEA自帶的,翻譯過來應該就是文件頭部代碼的意思吧。我們可以將其設置成如下格式:
/**
* @author: ${USER}
* @create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
* @description: ${description}
**/
就是一個注釋模板,指明了作者、創(chuàng)建時間、以及描述的信息,當然也可以設置其他信息,只需要加入一個個的${XXX}就行了,設置屬性的話代碼框下面的Description里就有。
然后依次點擊Files、Class,在public class ${NAME}上方輸入#parse("File Header.java")(如果該語句請忽略本操作),從而引入我們剛剛編寫好的File Header。然后再依次對Interface、Enum等各類模板進行相同設置。
這樣就大功告成了,以后每當我們創(chuàng)建java文件就會自動生成類注釋了。
實時生成
第一種代碼生成方案固然很好使,但并不能解決所有問題,因為我們在工作中不僅需要生成類注釋,還有方法注釋、甚至是屬性注釋啊。
不用擔心,對于這個問題,IDEA也給我們想到了,那就是Live Templates。下面就以自動生成方法注釋為例
自動生成方法注釋
IDEA主頁面輸入Ctrl+Alt+S進入設置頁面,依次點擊Live Templates和Template Group:
Template Group表示添加一個模板組,Live Template表示添加一個實時模板, 我們先創(chuàng)建一個自己的模板組,再在其中創(chuàng)建我們自己的模板,當然也可以不創(chuàng)建模板組,直接在已有的模板組中創(chuàng)建。模板組名自定義,我這里起MySelf
然后點擊右邊的小加號,點擊Live Template
輸入模板名及描述,為了方便使用,名字盡量不要設置太長,這里設置為m
然后點擊上圖的Define,選擇java,表示這個模板作用在java文件中
然后將以下代碼復制到代碼框,Expand with選擇Tap,即以tap方式觸發(fā)
*
* @description: $description$
* @author: $user$
* @create: $date$
* @param: $params$
* @return $return$
**/
然后點擊Exit varialbles,進行參數(shù)映射,設置如下:
其中,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即可設置成功!
現(xiàn)在,在任意java方法上都可以使用該模板,觸發(fā)輸入是:/*模板名,我這里就是/*m,然后再點擊Tab鍵即可生成注釋
效果如下所示:
/**
* @description: 這是一個XXX方法
* @author: OnlyOne
* @create: 2020/8/26
* @param: [param1, param2]
* @return Long
**/
public Long method(Integer param1, Integer param2) {
return id;
}
如果想更改模板,可以參考一下內(nèi)容:
https://blog.csdn.net/u014044812/article/details/76577479
Alt+Insert代碼生成
相信這種方法無需多言,大家基本上每天都在用的一種代碼生成方法。但為了照顧純小白,也在這里列出:
鍵盤按下Alt+Insert,然后選擇要生成的代碼:
第三方代碼生成
第三方代碼生成方案那就太多了,有的是Idea插件,有的是代碼生成器,不如Mybatis Plus代碼生成器。這里就不一一贅述,想要了解的話就請自行百度吧。