IDEA配置之模板代碼生成

前言:IDEA有著非常強大的代碼生成功能。通過這個功能,我們可以很便捷的生成javaDoc,也可以通過輸入簡短的代碼縮寫而輸出完整代碼,比如輸入sout的時候就會自動生成"System.out.println();"。如何才能自定義設置代碼生成呢?今天就來簡單總結一下。

就我目前所知道的,IDEA的代碼生成大致有四種:創(chuàng)建文件時生成、實時模板生成、第三方代碼生成器以及我們所熟知的"Alt+Insert生成",四個方法各有其使用場景。

創(chuàng)建文件時生成

對應設置的位置如下:

image-20200826141715597

凡是在這里設置的代碼模板,都會在文件創(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模板,省去不少麻煩。具體步驟如下:

image-20200826144549343

之后每當我們想要創(chuàng)建mapper文件時就可以選擇它,自動生成代碼結構:

image-20200826144727069
image-20200826144839059

創(chuàng)建java文件時自動生成類注釋

首先展示一下效果,比如創(chuàng)建一個student類,文件生成后的效果如圖:

image-20200826145223499

做到這種效果其實很簡單,不過在設置前先要說一個Include選項,如下:

image-20200826145345581

按照我的理解,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等各類模板進行相同設置。

image-20200826150614143

這樣就大功告成了,以后每當我們創(chuàng)建java文件就會自動生成類注釋了。

實時生成

第一種代碼生成方案固然很好使,但并不能解決所有問題,因為我們在工作中不僅需要生成類注釋,還有方法注釋、甚至是屬性注釋啊。

不用擔心,對于這個問題,IDEA也給我們想到了,那就是Live Templates。下面就以自動生成方法注釋為例

自動生成方法注釋

IDEA主頁面輸入Ctrl+Alt+S進入設置頁面,依次點擊Live Templates和Template Group:

image-20200826152100143

Template Group表示添加一個模板組,Live Template表示添加一個實時模板, 我們先創(chuàng)建一個自己的模板組,再在其中創(chuàng)建我們自己的模板,當然也可以不創(chuàng)建模板組,直接在已有的模板組中創(chuàng)建。模板組名自定義,我這里起MySelf

image-20200826152516695

然后點擊右邊的小加號,點擊Live Template

image-20200826152647846

輸入模板名及描述,為了方便使用,名字盡量不要設置太長,這里設置為m

image-20200826165227241

然后點擊上圖的Define,選擇java,表示這個模板作用在java文件中

image-20200826153054322

然后將以下代碼復制到代碼框,Expand with選擇Tap,即以tap方式觸發(fā)

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

image-20200826164734667

然后點擊Exit varialbles,進行參數(shù)映射,設置如下:

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即可設置成功!

現(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)容:

Idea中文文檔

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

Alt+Insert代碼生成

相信這種方法無需多言,大家基本上每天都在用的一種代碼生成方法。但為了照顧純小白,也在這里列出:

鍵盤按下Alt+Insert,然后選擇要生成的代碼:

image-20200826170445922

第三方代碼生成

第三方代碼生成方案那就太多了,有的是Idea插件,有的是代碼生成器,不如Mybatis Plus代碼生成器。這里就不一一贅述,想要了解的話就請自行百度吧。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容