auto-codeJava 代碼自動(dòng)生成器
auto-code
歡迎使用auto-code代碼自動(dòng)生成引擎.2.1.0 再次升級.現(xiàn)在生成代碼不再需要書寫yaml文件.直接可以通過頁面生成 單表, 一對一, 一對多 ,多對多代碼 源碼地址 代碼生成演示地址
項(xiàng)目介紹
項(xiàng)目的優(yōu)勢在哪里
1.目前市面上的代碼生成工具絕大多數(shù)僅僅支持生成單表,該項(xiàng)目支持
單表,一對一,一對多,多對多代碼生成.大大簡化了開發(fā)的工作量
2.只要目前你的項(xiàng)目采用 springMVC+spring+mybatis架構(gòu)的項(xiàng)目都適用(傳統(tǒng)工程和springBoot工程都適用). 不管一次開發(fā)還是二次開發(fā).該項(xiàng)目僅僅只是幫你生成單表以及多表的
增刪改查,不做任何底層的改動(dòng).
什么情況選擇該項(xiàng)目
1.該項(xiàng)目只生成接口(controller,service,serviceImpl,dao,xml), 不生成頁面.所以如果項(xiàng)目是采用前后臺分離,不需要寫頁面.該項(xiàng)目會(huì)適合你
2.如果還想生成頁面請看該項(xiàng)目,這個(gè)項(xiàng)目基于本項(xiàng)目.擴(kuò)展了頁面生成.適合后臺使用 源碼地址 演示地址 賬號
ztp密碼111111
為何會(huì)發(fā)起該項(xiàng)目?
絕大多數(shù)時(shí)候我們都是在做
增刪改查.每次創(chuàng)建一張表.然后我們需要重新寫一次增刪改查, 寫雖然簡單,不過極度耗時(shí)(controller,server,serverImpl,dao,xml) 所以才有了該項(xiàng)目,該項(xiàng)目能幫助你減少70%的工作量,讓你專注于業(yè)務(wù)的實(shí)現(xiàn).
集成教程
非常簡單.只需要短短的幾部就能完成集成
1.傳統(tǒng)java-web集成請看這里 項(xiàng)目地址
2.spring-boot集成請看這里 項(xiàng)目地址
使用教程
準(zhǔn)備工作
1.集成非常簡單請查看上面的項(xiàng)目.選擇自己需要的方式.里面有實(shí)例工程可供參考
界面如下:
單表生成
假設(shè)我們要生成一張單表
CREATE TABLE `test_simple_code` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`name` varchar(50) DEFAULT NULL COMMENT '名稱',
`age` int(3) DEFAULT NULL COMMENT '年齡',
`status` int(2) DEFAULT NULL COMMENT '{"name":"狀態(tài)","1":"啟用","0":"禁用"}',
`birthday` date DEFAULT NULL COMMENT '生日',
`remarks` text COMMENT '備注',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='單表代碼生成';
1.在數(shù)據(jù)庫建表
- 界面選擇單表生成.選擇對應(yīng)的表,點(diǎn)擊
生成預(yù)覽. 最后點(diǎn)擊確認(rèn)生成. 完畢.
生成的文件如下:
3.生成完畢
一對一代碼生成 one-to-one (代碼采用追加的方式.無需擔(dān)心代碼被覆蓋)
一個(gè)用戶對應(yīng)一個(gè)班級
CREATE TABLE `test_one_to_one_user` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(50) DEFAULT NULL COMMENT '名稱',
`age` INT(3) DEFAULT NULL COMMENT '年齡',
`status` INT(2) DEFAULT NULL COMMENT '{"name":"狀態(tài)","1":"啟用","0":"禁用"}',
`birthday` DATE DEFAULT NULL COMMENT '生日',
`remarks` TEXT COMMENT '備注',
`mun` DECIMAL(20,2) DEFAULT NULL COMMENT '數(shù)字',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8 COMMENT='一對一用戶';
CREATE TABLE `test_one_to_one_class` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '班級id',
`user_id` INT(11) DEFAULT NULL COMMENT '用戶id',
`class_name` VARCHAR(50) DEFAULT NULL COMMENT '班級名稱',
`quantity` INT(11) DEFAULT NULL COMMENT '班級人數(shù)',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='一對一班級';
打開界面.選擇對應(yīng)的表,一對一比單表多了一個(gè)外鍵id. 比如上面兩張表的關(guān)系就是通過 user_id來關(guān)聯(lián)的 如下:
test_one_to_one_user.id=test_one_to_one_class.user_id
一對多 代碼生成 one-to-Many (代碼采用追加的方式.無需擔(dān)心代碼被覆蓋)
一對多與一對一一樣不再描述
多對多 代碼生成 many-to-many (代碼采用追加的方式.無需擔(dān)心代碼被覆蓋)
多個(gè)用戶對應(yīng)多個(gè)角色
CREATE TABLE `test_many_to_many_role` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '角色',
`name` VARCHAR(100) NOT NULL COMMENT '角色名稱',
`status` INT(2) DEFAULT '0' COMMENT '{"name":"狀態(tài)","0":"啟用","1":"禁用"}',
`create_user_id` INT(11) DEFAULT NULL COMMENT '創(chuàng)建者',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
`update_user_id` INT(11) DEFAULT NULL COMMENT '更新者',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
`dels` INT(2) DEFAULT '0' COMMENT '{"name":"是否刪除","0":"正常","1":"刪除"}',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='多對多角色';
CREATE TABLE `test_many_to_many_user` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(50) DEFAULT NULL COMMENT '名稱',
`age` INT(3) DEFAULT NULL COMMENT '年齡',
`status` INT(2) DEFAULT NULL COMMENT '{"name":"狀態(tài)","1":"啟用","0":"禁用"}',
`birthday` DATE DEFAULT NULL COMMENT '生日',
`remarks` TEXT COMMENT '備注',
`mun` DECIMAL(20,2) DEFAULT NULL COMMENT '數(shù)字',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 COMMENT='多對多用戶';
CREATE TABLE `test_many_to_many_user_role` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '測試用戶角色',
`user_id` INT(11) DEFAULT NULL COMMENT '用戶id',
`role_id` INT(11) DEFAULT NULL COMMENT '角色id',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=140 DEFAULT CHARSET=utf8 COMMENT='多對多用戶角色';
1.打開界面.選擇對應(yīng)的表,
多對多比一對一多了一個(gè)關(guān)系描述表 比如上面三張表的關(guān)系是通過 test_many_to_many_user_role來表述的.如下:
test_many_to_many_user_role.user_id=test_many_to_many_user.id and test_many_to_many_user_role.role_id=test_many_to_many_role.id
生成代碼注意事項(xiàng)
1.創(chuàng)建表結(jié)構(gòu)時(shí)如果寫上表與字段的注釋將大大增加程序的可讀性.我會(huì)將注釋寫到bean上面.
2.如果注釋為json鍵值對字符串我將會(huì)在實(shí)體類生成一個(gè)字典方法
如: {"1":"啟用","0":"禁用"} 將會(huì)在實(shí)體類里面生成:
public String getStatus_(){
if(MyStringUtils.isEmpty(status)){
return "";
}else if(status.equals("1")){
return "啟用";
}else if(status.equals("0")){
return "禁用";
}
return "";
}
配置參數(shù)介紹
如果是spring boot請以auto-code.xx 開頭.如:
auto-code.cover=false
或者
auto-code:
cover: false
如果是java web請使用yaml格式書寫 如:
globalConfig:
parentPack
| 參數(shù)名 | 默認(rèn)值 | 介紹 |
|---|---|---|
| parentPack | 無 | 生成代碼的父包 如父包是com.zengtengpeng.test controller將在com.zengtengpeng.test.controller下 bean 將在com.zengtengpeng.test.bean下 ,service,dao同理 |
| parentPath | 無 | 生成代碼的項(xiàng)目根路徑 |
| cover | false | 是否覆蓋生成 默認(rèn)不覆蓋 |
| swagger | true | 是否生成swagger注解 (spring boot下如果為false將無法查看swagger頁面) |
| javaSource | src/main/java | java在項(xiàng)目中的源路徑 |
| resources | src/main/resources | resource位置 |
| xmlPath | mybatisMapper | mybatis xml存放的路徑 |
| packageBean | bean | 生成bean尾綴 |
| packageDao | dao | 生成dao尾綴 |
| packageController | controller | 生成controller尾綴 |
| packageService | service | 生成service尾綴 |
| packageBean | bean | 生成bean尾綴 |
| autoCode | true | 是否啟用代碼生成器(生成環(huán)境建議關(guān)閉) |
| watchMobel | false | 觀察者模式.只能看.不能生成代碼(演示環(huán)境用的) |
