CodeGenerator代碼生成器

CodeGenerator代碼生成器

CodeGenerator是一個(gè)JavaEE代碼生成器,它可以幫助我們生成一個(gè)可以直接運(yùn)行的JavaWeb工程。

1 生成的文件

這個(gè)代碼生成器生成的代碼包括簡(jiǎn)單的增刪改查代碼入录、配置文件和SwaggerUI頁(yè)面洽胶。具體生成的文件包括:

  • 代碼文件:
    • 持久化對(duì)象PO類
    • 使用SpringMVC編寫的Controller文件
    • Service層接口文件
    • 使用Spring編寫的ServiceImpl實(shí)現(xiàn)類
    • Dao層接口文件
    • 使用Hibernate編寫的DaoImpl實(shí)現(xiàn)類
  • 配置文件:
    • SpringMVC的配置文件
    • Spring的配置文件
    • Hibernate的配置文件
    • web.xml文件
    • pom.xml文件
  • 頁(yè)面文件:SwaggerUI頁(yè)面

2 實(shí)現(xiàn)原理

2.1 代碼文件的生成

參照mybatis-generator-core-1.3.2.jar的實(shí)現(xiàn)原理晒夹,抽取出插件中對(duì)Java文件的封裝和生成的核心代碼,然后根據(jù)個(gè)人需求對(duì)它們進(jìn)行精簡(jiǎn)和改寫姊氓,使其能夠生成控制層丐怯、業(yè)務(wù)層和持久層的Java代碼。

2.2 配置文件的生成

使用FreeMarker模板引擎來(lái)生成配置文件翔横。因?yàn)樵谂渲梦募?需要?jiǎng)討B(tài)改變的內(nèi)容很少读跷,所以我認(rèn)為使用模板引擎技術(shù)來(lái)生成比較方便。

2.3 UI文件的生成

UI文件的生成過(guò)程就是一個(gè)文件夾拷貝操作禾唁。我將預(yù)先準(zhǔn)備好的SwaggerUI文件放到生成器工程下,程序運(yùn)行時(shí)就會(huì)將這些文件拷貝到新生成的工程下面效览。這樣做的好處是不用自己去Swagger官網(wǎng)下載文件,然后手動(dòng)將文件拷貝過(guò)去荡短。

3 使用方式

3.1 下載源碼

源碼地址:https://github.com/GitHub-LiChengPeng/CodeGenerator

3.2 添加數(shù)據(jù)庫(kù)信息

找到生成器源碼的入口類(core.Main)丐枉,修改主方法中指定的MySQL數(shù)據(jù)庫(kù)的用戶名、密碼和數(shù)據(jù)庫(kù)名肢预。

3.3 生成代碼

要生成正確的代碼需要滿足兩個(gè)條件:一矛洞、數(shù)據(jù)庫(kù)表必須有主鍵,而且主鍵必須滿足單一、整型沼本、自增三個(gè)特點(diǎn)噩峦。二、只能在Windows系統(tǒng)上運(yùn)行程序抽兆,因?yàn)槁窂絾?wèn)題识补。

我們可以先在數(shù)據(jù)庫(kù)中新建一張表(如用戶表),SQL語(yǔ)句如下:

CREATE TABLE `user` (
`user_id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶主鍵' ,
`user_name`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用戶名' ,
`user_birthday`  date NULL DEFAULT NULL COMMENT '用戶生日' ,
PRIMARY KEY (`user_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
COMMENT='用戶表'
AUTO_INCREMENT=5
ROW_FORMAT=COMPACT;

然后運(yùn)行程序辫红,程序會(huì)讀取指定數(shù)據(jù)庫(kù)下的所有表格凭涂,然后針對(duì)每個(gè)表格生成基本的增刪改查代碼。程序執(zhí)行完畢后贴妻,我們可以在桌面上找到一個(gè)新生成的名字為Project的工程切油。

最后我們使用IntelliJ IDEA打開(Open)剛生成的工程,可以看到工程中的代碼結(jié)構(gòu)如下圖所示:


01-工程結(jié)構(gòu)圖.png

3.4 修改工程設(shè)置

需要修改兩個(gè)地方:第一個(gè)是讓編譯器找到web.xml名惩,第二個(gè)是讓編譯器知道web目錄所在的路徑澎胡。具體操作如下:


02-修改工程設(shè)置.gif

3.5 添加Tomcat服務(wù)器

03-添加Tomcat服務(wù)器.gif

3.6 啟動(dòng)服務(wù)器

Tomcat服務(wù)器成功啟動(dòng)后,瀏覽器自動(dòng)會(huì)打開SwaggerUI的頁(yè)面娩鹉。我們可以在頁(yè)面中看到生成器為用戶表生成的增刪改查API。


04-SwaggerUI頁(yè)面.png

3.7 測(cè)試增刪改查方法

3.7.1 測(cè)試增加用戶:

05-增加操作.gif

3.7.2 測(cè)試刪除用戶

06-刪除操作.gif

3.7.3 測(cè)試修改用戶:

07-修改操作.gif

3.7.4 測(cè)試按主鍵查用戶:

08-按主鍵查.gif

3.7.5 測(cè)試查詢所有用戶:

09-查詢所有.gif

4 使用場(chǎng)景

因?yàn)槟壳斑€沒(méi)有對(duì)生成器源碼進(jìn)行重構(gòu)受楼,所以它的擴(kuò)展性很差祠挫。我覺(jué)得這個(gè)生成器現(xiàn)在只能用在教學(xué)和娛樂(lè)場(chǎng)景。


10.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糟趾,一起剝皮案震驚了整個(gè)濱河市义郑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌交汤,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件星岗,死亡現(xiàn)場(chǎng)離奇詭異俏橘,居然都是意外死亡寥掐,警方通過(guò)查閱死者的電腦和手機(jī)磷蜀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門褐隆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人轨蛤,你說(shuō)我怎么就攤上這事祥山〉舴” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵供常,是天一觀的道長(zhǎng)栈暇。 經(jīng)常有香客問(wèn)我箍镜,道長(zhǎng),這世上最難降的妖魔是什么香缺? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任图张,我火速辦了婚禮祸轮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讲仰。我一直安慰自己痪蝇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布趁矾。 她就那樣靜靜地躺著毫捣,像睡著了一般帝际。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斑粱,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天则北,我揣著相機(jī)與錄音痕慢,去河邊找鬼。 笑死快骗,一個(gè)胖子當(dāng)著我的面吹牛滨巴,可吹牛的內(nèi)容都是我干的俺叭。 我是一名探鬼主播熄守,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼裕照,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惠猿?” 一聲冷哼從身側(cè)響起负间,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤政溃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后扼鞋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體云头,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溃槐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年撮慨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片影涉。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蟹倾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鲜棠,到底是詐尸還是另有隱情培慌,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布盒音,位于F島的核電站,受9級(jí)特大地震影響祥诽,放射性物質(zhì)發(fā)生泄漏雄坪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一绳姨、第九天 我趴在偏房一處隱蔽的房頂上張望笨农。 院中可真熱鬧,春花似錦竭宰、人聲如沸份招。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谐腰。三九已至,卻和暖如春励背,著一層夾襖步出監(jiān)牢的瞬間砸西,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工衅疙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸳慈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓絮识,卻偏偏與公主長(zhǎng)得像嗽上,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兽愤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,787評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)哲思,斷路器,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 1 場(chǎng)景問(wèn)題# 1.1 繼續(xù)導(dǎo)出數(shù)據(jù)的應(yīng)用框架## 在討論工廠方法模式的時(shí)候帝簇,提到了一個(gè)導(dǎo)出數(shù)據(jù)的應(yīng)用框架靠益。 對(duì)于...
    七寸知架構(gòu)閱讀 5,703評(píng)論 1 64
  • 不知道為什么胧后,總會(huì)有那么一個(gè)瞬間,心情莫名的低落纸巷,看著窗外的景色,想著自己這些年失去的東西瘤旨,莫名的覺(jué)得傷感凛驮。 記得...
    莫忘言閱讀 296評(píng)論 0 2
  • 寶馬3系黔夭,15CX-5,16RAV4本姥,16騏達(dá)肩袍,(13氛赐、16天籟),16軒逸艰管、16蘭德酷路澤、CX-4牲芋、10代思域...
    xiao珊珊閱讀 197評(píng)論 0 0