我寫(xiě)了個(gè)工具,讓CRUD開(kāi)發(fā)效率提升100倍
最近在做一個(gè)項(xiàng)目,需要新建20多張表
相信大多數(shù)同學(xué)應(yīng)該和我一樣,都是比較討厭創(chuàng)建新表這個(gè)工作的,因?yàn)槊縿?chuàng)建一張表,都要去創(chuàng)建實(shí)體類(lèi)、創(chuàng)建增刪改查的接口、編寫(xiě)增刪改查的SQL代碼等等,把這些事情做完,2個(gè)小時(shí)也就過(guò)去了
我就在思考啊,每一張表,就要耗費(fèi)兩個(gè)小時(shí),20多張表,那就是40多個(gè)小時(shí),一周的時(shí)間就這樣過(guò)去了。
這誰(shuí)受得了呀,所以我打算寫(xiě)一個(gè)工具,把這些代碼都自動(dòng)生成出來(lái)!
在連續(xù)爆肝了5個(gè)晚上之后,我做出了這款自動(dòng)生成業(yè)務(wù)代碼的工具!
我把它放在了我的工具站上,大家可以訪問(wèn)這個(gè)域名直接使用
utilsbox.cn/?app=bizcod…
使用演示
下面給大家演示一下
假設(shè)我們現(xiàn)在創(chuàng)建一個(gè)商品表
首先填寫(xiě)表名和表的中文名稱(chēng)
然后我們添加商品表對(duì)應(yīng)的字段,這些操作和我們?nèi)粘J褂玫臄?shù)據(jù)庫(kù)工具差不多
把字段填寫(xiě)好了之后,點(diǎn)擊“一鍵生成代碼”
高潮的地方來(lái)了
DB層、業(yè)務(wù)層、甚至是controller層的代碼,工具都幫我們自動(dòng)生成了!
來(lái)看下代碼,建表sql、增刪改查sql、表對(duì)應(yīng)的實(shí)體類(lèi)、DB層的接口類(lèi)、業(yè)務(wù)層的實(shí)體類(lèi)、業(yè)務(wù)層的接口類(lèi)、業(yè)務(wù)接口的實(shí)現(xiàn)類(lèi)、業(yè)務(wù)層實(shí)體類(lèi)和db層實(shí)體類(lèi)的轉(zhuǎn)換器,最后是controller層,這些代碼全都幫我們生成好了。
這是什么概念呢
現(xiàn)在我們只需要把這些代碼拷貝到項(xiàng)目里,簡(jiǎn)單設(shè)置一下類(lèi)的引用,增刪改查這些基本功能,就已經(jīng)可以直接給前端去調(diào)用了。
很多同學(xué)可能會(huì)問(wèn),如果是現(xiàn)有的數(shù)據(jù)表,再來(lái)這里添加一次感覺(jué)太麻煩了
這個(gè)問(wèn)題我也遇到了,所以我做了一個(gè)識(shí)別建表SQL的功能,常見(jiàn)的數(shù)據(jù)庫(kù)工具對(duì)于已經(jīng)創(chuàng)建好的表,都提供建表語(yǔ)句的復(fù)制功能,只需要把建表SQL粘貼到這個(gè)文本框里。
點(diǎn)擊“識(shí)別”按鈕,這個(gè)SQL的信息會(huì)自動(dòng)識(shí)別過(guò)來(lái),這時(shí)候只需要把表的中文名稱(chēng)填寫(xiě)上去,點(diǎn)擊“一鍵生成代碼”,就可以馬上得到這個(gè)表的業(yè)務(wù)代碼。
通用性的思考
不知道大家覺(jué)得怎么樣哈,如果只是我自己用,我覺(jué)著已經(jīng)非常好了,但既然是開(kāi)放出來(lái)給大家用,通用性肯定還是不夠的。
因?yàn)楝F(xiàn)在看到的這一套自動(dòng)生成的代碼,可能只是適合我,但不同的人、不同的公司,它們項(xiàng)目結(jié)構(gòu)的分層、代碼的細(xì)節(jié),都是不一樣的
所以,我還開(kāi)發(fā)了代碼模版配置的功能
點(diǎn)擊“代碼模版配置”按鈕,在這個(gè)彈窗里,我們可以新增、刪除代碼的分類(lèi)。同樣的,也可以新增、刪除和編輯具體的代碼模版。
代碼生成的原理
在說(shuō)代碼模版具體怎么配置之前,先給大家講一下代碼自動(dòng)生成的原理
它由代碼模版和動(dòng)態(tài)參數(shù)組成,核心就是匹配 - 替換
首先,工具提供了很多動(dòng)態(tài)參數(shù),這些動(dòng)態(tài)參數(shù),對(duì)應(yīng)的是我們填寫(xiě)的表名、字段名等等這些信息的原始值,或者處理過(guò)后的值。
然后,代碼模版由用戶自行定義,在代碼的關(guān)鍵位置,插入動(dòng)態(tài)參數(shù),即可形成一份代碼模版。
最后,工具通過(guò)匹配和替換動(dòng)態(tài)參數(shù),最終生成了代碼。
理論上,不論什么語(yǔ)言,你都可以配置專(zhuān)屬于你自己的代碼模版。
舉個(gè)簡(jiǎn)單的栗子:
我們配置了一份這樣的代碼模版,如下:
/** ?* $table_desc$Model模型 ?* Created by 創(chuàng)建人 on $current_time$. ?*/ public class $table_name_hump_A$Model extends ToString{ } 復(fù)制代碼
可以看到,模版里分別使用了$table_desc$(表中文名)
、$current_time$(當(dāng)前時(shí)間)
、$table_name_hump_A$(表名轉(zhuǎn)首字母大寫(xiě)駝峰)
這三個(gè)動(dòng)態(tài)參數(shù)。
當(dāng)我們?cè)O(shè)置 表名 = goods_order、表中文名 = 商品訂單 時(shí),代碼生成的結(jié)果如下所示:
/** ?* 商品訂單Model模型 ?* Created by 創(chuàng)建人 on 2023-02-05 17:12:32. ?*/ public class GoodsOrderModel extends ToString{ } 復(fù)制代碼
動(dòng)態(tài)參數(shù)部分,全部替換成了我們輸入的表信息。
最后希望這個(gè)項(xiàng)目對(duì)大家有用,之后我會(huì)開(kāi)發(fā)更多有意思的項(xiàng)目。
由于這個(gè)項(xiàng)目都是晚上加班肝出來(lái)的,可能會(huì)存在一些BUG,發(fā)現(xiàn)了我會(huì)盡快修復(fù)的,也請(qǐng)大家多多包涵。
這幾天我會(huì)整理一下代碼,把注釋什么的都寫(xiě)好,然后把代碼完完整整的開(kāi)源給大家,感謝大家的觀看,我們下期見(jiàn)。