This commit is contained in:
rainerosion 2023-01-12 18:30:16 +08:00
parent 2ed21eacc7
commit 76dc441444
6 changed files with 69 additions and 66 deletions

View File

@ -22,6 +22,8 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.20'
implementation 'org.yaml:snakeyaml:1.33'
implementation 'org.apache.commons:commons-lang3:3.12.0'
implementation 'com.alibaba.fastjson2:fastjson2:2.0.22'
//mybatis plus gen
// implementation 'org.springframework.boot:spring-boot-starter'

View File

@ -41,6 +41,10 @@ public class Config {
* 包名
*/
private String packageName;
/**
* 基础包
*/
private String basePackage;
/**
* 项目名
*/

View File

@ -154,7 +154,7 @@ public class GeneratorUtil {
DatabaseUtil instance = DatabaseUtil.getInstance();
List<String> table = instance.getTable();
table.forEach(t -> {
System.out.println("<<<<< table: " + t + " >>>>>");
System.out.println("<<<<< table: " + t + " >>>>>");
try {
List<Column> column = instance.getColumn(t);
generatorCode(column, t);
@ -178,53 +178,60 @@ public class GeneratorUtil {
/**
* 生成实体
*/
public static void generatorCode(List<Column> list, String tableName){
generatorByTemplate(list,tableName,"po");
generatorByTemplate(list,tableName,"entity");
generatorByTemplate(list,tableName,"resDto");
generatorByTemplate(list,tableName,"reqDto");
// generatorByTemplate(list,tableName,"repository");
// generatorByTemplate(list,tableName,"service");
generatorByTemplate(null,tableName,"mapper");
generatorByTemplate(null,tableName,"mapper.xml");
public static void generatorCode(List<Column> list, String tableName) {
// generatorByTemplate(list,tableName,"po");
// generatorByTemplate(list,tableName,"entity");
// generatorByTemplate(list,tableName,"resDto");
// generatorByTemplate(list,tableName,"reqDto");
// generatorByTemplate(list,tableName,"repository");
// generatorByTemplate(list,tableName,"service");
// generatorByTemplate(null,tableName,"mapper");
generatorByTemplate(null, tableName, "mapper.xml");
// generatorByTemplate(list,tableName,"controller");
}
// public static void generatorPo_bak(List<Column> list, String table) throws IOException, TemplateException {
// //如果有前缀去除
// String className = table;
// if (StringUtils.isNotEmpty(CONFIG.getTablePrefix())) {
// className = formatTableName(table);
// }
// // 类名首字母大写
// className = toUpperCaseFist(className);
// Configuration configuration = new Configuration(Configuration.VERSION_2_3_0);
// Template template = configuration.getTemplate("src/main/resources/template/po.ftl");
// String path = CONFIG.getProjectName() + "-server/" + package2Path(CONFIG.getPackageName() + ".infrastructure.persistence.po/");
// String filepath = path + className + SUFFIX;
// // 文件夹不存在创建
// if (!new File(path).exists()) {
// if (new File(path).mkdirs()) {
// // System.out.println("PO 文件夹创建成功");
// }
// if (new File(filepath).createNewFile()) {
// System.out.println("=== PO:[" + className + " ] 创建成功 ===");
// }
//
// }
// Map<String, Object> data = new HashMap<>();
// data.put("package", CONFIG.getPackageName() + ".infrastructure.persistence.po");
// data.put("table_name", table);
// data.put("class_name", className);
// data.put("columns", list);
// File file = new File(filepath);
// template.process(data, new FileWriter(file));
// }
/**
* 生成文件
*
* @param columnList
* @param table 表名
* @param type 类型
*/
public static void generatorByTemplate(List<Column> columnList, String table, TypeEnum type) {
// 文件模板路径
String templatePath = String.format("src/main/resources/template/%s.ftl", type.getTemplate());
String destPath = null;
String projectName = CONFIG.getProjectName();
// 去除前缀
String className = formatTableName(table);
// 转换为大驼峰式命名
className = toUpperCaseFist(toCamelCase(className));
String baseMapperXml = "%s-%s/src/main/resources/mapper/%s%s.xml";
String baseClassFile = "%s-%s/src/main/java/%s/%s/%s%s.java";
switch (type) {
case MAPPER_XML:
destPath = String.format(baseMapperXml, projectName, type.getModule(), className, toUpperCaseFist(type.getTemplate()));
break;
case RES_DTO:
destPath = String.format(baseClassFile, projectName, type.getModule(),
package2Path(CONFIG.getPackageName()),
package2Path(CONFIG.getPackageLocation().getResDto()),
className, toUpperCaseFist(type.getTemplate()));
case REQ_DTO:
destPath = String.format(baseClassFile, projectName, type.getModule(), package2Path(CONFIG.getPackageName()), package2Path(CONFIG.getPackageLocation().getReqDto()));
default:
destPath = String.format(baseClassFile, projectName, type.getModule(), package2Path(CONFIG.getPackageName()), package2Path(""));
}
}
/**
* create template file
*
* @param type 类型 po entity dto mapper service repository controller
* @param type 类型 po entity dto mapper service repository controller
*/
public static void generatorByTemplate(List<Column> list, String tableName, String type) {
String templatePath = String.format("src/main/resources/template/%s.ftl", toLowerCase(type));
@ -235,16 +242,16 @@ public class GeneratorUtil {
// data
Map<String, Object> data = new HashMap<>();
// add base data
data.put("mapper_package",CONFIG.getMapperPackage());
data.put("entity_package",CONFIG.getEntityPackage());
data.put("po_package",CONFIG.getPoPackage());
data.put("service_package",CONFIG.getServicePackage());
data.put("repository_package",CONFIG.getRepositoryPackage());
data.put("res_dto_package",CONFIG.getResDtoPackage());
data.put("req_dto_package",CONFIG.getReqDtoPackage());
data.put("controller_package",CONFIG.getControllerpackage());
data.put("mapper_package", CONFIG.getMapperPackage());
data.put("entity_package", CONFIG.getEntityPackage());
data.put("po_package", CONFIG.getPoPackage());
data.put("service_package", CONFIG.getServicePackage());
data.put("repository_package", CONFIG.getRepositoryPackage());
data.put("res_dto_package", CONFIG.getResDtoPackage());
data.put("req_dto_package", CONFIG.getReqDtoPackage());
data.put("controller_package", CONFIG.getControllerpackage());
data.put("package", CONFIG.getPackageName());
data.put("author",CONFIG.getAuthor());
data.put("author", CONFIG.getAuthor());
// 如果有前缀去除
if (StringUtils.isNotEmpty(CONFIG.getTablePrefix())) {
className = formatTableName(tableName);
@ -296,8 +303,8 @@ public class GeneratorUtil {
String dir = "";
String filePath = "";
// mapper.xml file deal
if (Objects.equals(type,"mapper.xml")){
dir = String.format("%s-%s/src/main/resources/mapper/",CONFIG.getProjectName(),moduleName);
if (Objects.equals(type, "mapper.xml")) {
dir = String.format("%s-%s/src/main/resources/mapper/", CONFIG.getProjectName(), moduleName);
filePath = dir + className + toUpperCaseFist(type) + SUFFIX;
} else {
dir = String.format("%s-%s/src/main/java/%s/%s/", CONFIG.getProjectName(), moduleName, package2Path(CONFIG.getPackageName()), package2Path(secondaryPackage));
@ -372,7 +379,7 @@ public class GeneratorUtil {
* @return
*/
public static String package2Path(String packageName) {
if (packageName == null){
if (packageName == null) {
return "";
}
return packageName.replace(".", "/");

View File

@ -14,6 +14,7 @@ public enum TypeEnum {
DOMAIN_SERVICE("领域服务", "domainService", "server"),
APPLICATION_SERVICE("应用层", "applicationService", "server"),
MAPPER("DAO", "mapper", "server"),
MAPPER_XML("XML","mapper.xml", "server"),
REPOSITORY("仓储层", "repository", "server"),
ENTITY("领域实体", "entity", "server"),
RES_DTO("响应体", "resDto", "dto"),

View File

@ -11,6 +11,8 @@ generate:
url: jdbc:postgresql://db.timemail.email:5432/timemail
# 包名
packageName: cn.timemail.email
# 项目基础包
basePackage: timemail.email
# 项目名称
projectName: timemail
# 前缀

View File

@ -1,13 +0,0 @@
package cn.rainss.codegenerator;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class CodeGeneratorApplicationTests {
@Test
void contextLoads() {
}
}