EasyCode代碼生成器,超詳細安裝和生成模闆
一、常見的模闆
1.velocity,預設模闆的字尾vm
2.freemarker,預設模闆的字尾ftli
二、模闆技術可以實作的功能
1.動态頁面靜态化
2.用作發送郵件、短信模闆
3.代碼生成器
三、代碼生成器
使用了代碼生成器就是先定義好模闆,然後使用代碼自動修改類名,有代碼參照模闆進行指定内容自動替換。
1.準備模闆(把每個子產品需要改的地方确定好)
- 确定所有模闆的生成順序
- 确定所有模闆的生成位置
4.确定要生成的基本功能的domain
- 根據Domain名稱與模闆結合,在相應位置生成檔案
- 解決如果父檔案夾不存在的問題
- 解決如果檔案已經存在的問題
8.排錯(有錯先改模闆)
大概思路是這樣的,如果想學習相關操作配置,我會在以後的文章中詳解。今天講的是一個插件EasyCode。
四、EasyCode
EasyCode是基于IntelliJ IDEA開發的代碼生成插件,支援自定義任意模闆(Java,html,js,xml)。隻要是與資料庫相關的代碼都可以通過自定義模闆來生成。支援資料庫類型與java類型映射關系配置。支援同時生成生成多張表的代碼。每張表有獨立的配置資訊。完全的個性化定義,規則由你設定。
前提:你要會Velocity!!
EasyCode能做什麼?
EasyCode是基于IntelliJ IDEA Ultimate版開發的一個代碼生成插件,主要通過自定義模闆(基于velocity)來生成各種你想要的代碼。通常用于生成Entity(domain)、Dao、Service、Controller。如果你動手能力強還可以用于生成HTML、JS、PHP等代碼。理論上來說隻要是與資料有關的代碼都是可以生成的。
相關資訊請參考官方文檔!!!
安裝EasyCode
1、線上安裝
File--->Settings...
2、離線安裝
3、添加資料源
選擇你用的資料庫
輸入你資料庫的使用者和密碼
選擇要操作的資料庫
五、建立代碼生成器模闆
1、建立模闆之前,要先寫好一個類的各層實作。
//以domain為例
##引入宏定義
$!define
##使用宏定義設定回調(儲存位置與檔案字尾)
/*設定domain生成的位置
src以下的項目名/domain
.java 生成的檔案類型
*/
#save("/main/java/xxx/domain", ".java")
##使用宏定義設定包字尾
//生成的類最開始引入包的名字package xxx.domain;
#setPackageSuffix("domain")
##使用全局變量實作預設包導入
$!autoImport//自動導包 好像不夠自動,是以自己導公共包
import javax.persistence.*;
##使用宏定義實作類注釋資訊
#tableComment("實體類")//注釋不管
@Entity
@Table(name="$!{tableInfo.obj.name}")
//tableInfo.obj.name獲得實體類 (首字母小寫)
public class $!{tableInfo.name} extends BaseDomain {
//tableInfo.name 獲得實體類 (首字母大寫)
#foreach($column in $tableInfo.otherColumn)
//周遊除主鍵的屬性
#if(${column.comment})//${column.comment}#end
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
//獲得實體類中屬性 column.name
#end
#foreach($column in $tableInfo.otherColumn)
##使用宏定義實作get,set方法
#getSetMethod($column)
#end
}
2、後序
其他層也可以這樣改,具體屬性代表什麼,安裝好easy code後,在Template Sertting下都可以查詢,建議安裝最新版,獲得類名的大寫和小寫友善
2.1 save("/main/java/xxx/domain", “.java”) 設定domain生成的位置,src以下的項目名/domain ,.java 生成的檔案類型
2.2 生成的類最開始引入包的名字packagexxx.domain;setPackageSuffix(“domain”)
2.3 tableInfo.obj.name獲得實體類 (首字母小寫)
2.4 tableInfo.name 獲得實體類 (首字母大寫)
2.5 #foreach($column in $tableInfo.otherColumn) #end
2.6 獲得實體類中屬性 column.name
體類 (首字母小寫)
2.4 tableInfo.name 獲得實體類 (首字母大寫)
2.5 #foreach($column in $tableInfo.otherColumn) #end
2.6 獲得實體類中屬性 column.name