mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 01:28:24 +08:00
feat: 新增 Controller 层的代码生成。
This commit is contained in:
parent
cbaee29a23
commit
bde4b63d28
@ -33,6 +33,9 @@ public class GlobalConfig {
|
||||
//代码生成目录
|
||||
private String sourceDir;
|
||||
|
||||
//根包名
|
||||
private String basePackage = "com.mybatisflex";
|
||||
|
||||
//entity 的包名
|
||||
private String entityPackage;
|
||||
|
||||
@ -116,6 +119,27 @@ public class GlobalConfig {
|
||||
//自定义 serviceImpl 的父类
|
||||
private Class<?> serviceImplSupperClass = ServiceImpl.class;
|
||||
|
||||
//是否生成 controller 类
|
||||
private boolean controllerGenerateEnable = false;
|
||||
|
||||
//是否覆盖已经存在的 controller
|
||||
private boolean controllerOverwriteEnable = false;
|
||||
|
||||
//controller 类的前缀
|
||||
private String controllerClassPrefix;
|
||||
|
||||
//controller 类的后缀
|
||||
private String controllerClassSuffix = "Controller";
|
||||
|
||||
//controller 的包名
|
||||
private String controllerPackage;
|
||||
|
||||
//自定义 controller 的父类
|
||||
private Class<?> controllerSupperClass;
|
||||
|
||||
//rest 风格的 Controller
|
||||
private boolean restStyleController = true;
|
||||
|
||||
//数据库表前缀,多个前缀用英文逗号(,) 隔开
|
||||
private String tablePrefix;
|
||||
|
||||
@ -158,9 +182,17 @@ public class GlobalConfig {
|
||||
this.sourceDir = StringUtil.trimOrNull(sourceDir);
|
||||
}
|
||||
|
||||
public String getBasePackage() {
|
||||
return basePackage;
|
||||
}
|
||||
|
||||
public void setBasePackage(String basePackage) {
|
||||
this.basePackage = StringUtil.trimOrNull(basePackage);
|
||||
}
|
||||
|
||||
public String getEntityPackage() {
|
||||
if (StringUtil.isBlank(entityPackage)) {
|
||||
throw new IllegalStateException("entityPackage can not be null or blank in GlobalConfig.");
|
||||
entityPackage = basePackage + ".entity";
|
||||
}
|
||||
return entityPackage;
|
||||
}
|
||||
@ -224,8 +256,8 @@ public class GlobalConfig {
|
||||
}
|
||||
|
||||
public String getTableDefPackage() {
|
||||
if (StringUtil.isBlank(tableDefPackage) && StringUtil.isNotBlank(entityPackage)) {
|
||||
return entityPackage + ".tables";
|
||||
if (StringUtil.isBlank(tableDefPackage)) {
|
||||
return getEntityPackage() + ".tables";
|
||||
}
|
||||
return tableDefPackage;
|
||||
}
|
||||
@ -290,7 +322,7 @@ public class GlobalConfig {
|
||||
|
||||
public String getMapperPackage() {
|
||||
if (StringUtil.isBlank(mapperPackage)) {
|
||||
throw new IllegalStateException("mapperPackage can not be null or blank in GlobalConfig.");
|
||||
mapperPackage = basePackage + ".mapper";
|
||||
}
|
||||
return mapperPackage;
|
||||
}
|
||||
@ -344,7 +376,7 @@ public class GlobalConfig {
|
||||
|
||||
public String getServicePackage() {
|
||||
if (StringUtil.isBlank(servicePackage)) {
|
||||
throw new IllegalStateException("servicePackage can not be null or blank in GlobalConfig.");
|
||||
servicePackage = basePackage + ".service";
|
||||
}
|
||||
return servicePackage;
|
||||
}
|
||||
@ -398,7 +430,7 @@ public class GlobalConfig {
|
||||
|
||||
public String getServiceImplPackage() {
|
||||
if (StringUtil.isBlank(serviceImplPackage)) {
|
||||
throw new IllegalStateException("serviceImplPackage can not be null or blank in GlobalConfig.");
|
||||
serviceImplPackage = basePackage + ".service.impl";
|
||||
}
|
||||
return serviceImplPackage;
|
||||
}
|
||||
@ -415,6 +447,68 @@ public class GlobalConfig {
|
||||
this.serviceImplSupperClass = serviceImplSupperClass;
|
||||
}
|
||||
|
||||
public boolean isControllerGenerateEnable() {
|
||||
return controllerGenerateEnable;
|
||||
}
|
||||
|
||||
public void setControllerGenerateEnable(boolean controllerGenerateEnable) {
|
||||
this.controllerGenerateEnable = controllerGenerateEnable;
|
||||
}
|
||||
|
||||
public boolean isControllerOverwriteEnable() {
|
||||
return controllerOverwriteEnable;
|
||||
}
|
||||
|
||||
public void setControllerOverwriteEnable(boolean controllerOverwriteEnable) {
|
||||
this.controllerOverwriteEnable = controllerOverwriteEnable;
|
||||
}
|
||||
|
||||
public String getControllerClassPrefix() {
|
||||
if (StringUtil.isBlank(controllerClassPrefix)) {
|
||||
return "";
|
||||
}
|
||||
return controllerClassPrefix;
|
||||
}
|
||||
|
||||
public void setControllerClassPrefix(String controllerClassPrefix) {
|
||||
this.controllerClassPrefix = StringUtil.trimOrNull(controllerClassPrefix);
|
||||
}
|
||||
|
||||
public String getControllerClassSuffix() {
|
||||
return controllerClassSuffix;
|
||||
}
|
||||
|
||||
public void setControllerClassSuffix(String controllerClassSuffix) {
|
||||
this.controllerClassSuffix = StringUtil.trimOrNull(controllerClassSuffix);
|
||||
}
|
||||
|
||||
public String getControllerPackage() {
|
||||
if (StringUtil.isBlank(controllerPackage)) {
|
||||
controllerPackage = basePackage + ".controller";
|
||||
}
|
||||
return controllerPackage;
|
||||
}
|
||||
|
||||
public void setControllerPackage(String controllerPackage) {
|
||||
this.controllerPackage = StringUtil.trimOrNull(controllerPackage);
|
||||
}
|
||||
|
||||
public Class<?> getControllerSupperClass() {
|
||||
return controllerSupperClass;
|
||||
}
|
||||
|
||||
public void setControllerSupperClass(Class<?> controllerSupperClass) {
|
||||
this.controllerSupperClass = controllerSupperClass;
|
||||
}
|
||||
|
||||
public boolean isRestStyleController() {
|
||||
return restStyleController;
|
||||
}
|
||||
|
||||
public void setRestStyleController(boolean restStyleController) {
|
||||
this.restStyleController = restStyleController;
|
||||
}
|
||||
|
||||
public String getTablePrefix() {
|
||||
return tablePrefix;
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@ public class Table {
|
||||
}
|
||||
}
|
||||
|
||||
private String getEntityJavaFileName() {
|
||||
public String getEntityJavaFileName() {
|
||||
String entityJavaFileName = name;
|
||||
String tablePrefix = globalConfig.getTablePrefix();
|
||||
if (tablePrefix != null) {
|
||||
@ -245,6 +245,13 @@ public class Table {
|
||||
+ globalConfig.getServiceImplClassSuffix();
|
||||
}
|
||||
|
||||
public String buildControllerClassName() {
|
||||
String entityJavaFileName = getEntityJavaFileName();
|
||||
return globalConfig.getControllerClassPrefix()
|
||||
+ entityJavaFileName
|
||||
+ globalConfig.getControllerClassSuffix();
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 @Table(...) 注解
|
||||
*/
|
||||
@ -310,6 +317,10 @@ public class Table {
|
||||
return globalConfig.getServiceImplSupperClass().getSimpleName();
|
||||
}
|
||||
|
||||
public String buildControllerName() {
|
||||
return globalConfig.getControllerSupperClass().getSimpleName();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@ -30,6 +30,7 @@ public class GeneratorFactory {
|
||||
registerGenerator("mapper", new MapperGenerator());
|
||||
registerGenerator("service", new ServiceGenerator());
|
||||
registerGenerator("serviceImpl", new ServiceImplGenerator());
|
||||
registerGenerator("controller", new ControllerGenerator());
|
||||
registerGenerator("tableDef", new TableDefGenerator());
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
/**
|
||||
* Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com).
|
||||
* <p>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.mybatisflex.codegen.generator.impl;
|
||||
|
||||
import com.mybatisflex.codegen.config.GlobalConfig;
|
||||
import com.mybatisflex.codegen.entity.Table;
|
||||
import com.mybatisflex.codegen.generator.IGenerator;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Controller 生成器。
|
||||
*
|
||||
* @author 王帅
|
||||
* @since 2023-05-14
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public class ControllerGenerator implements IGenerator {
|
||||
|
||||
private String templatePath = "/templates/enjoy/controller.tpl";
|
||||
|
||||
public ControllerGenerator() {
|
||||
}
|
||||
|
||||
public ControllerGenerator(String templatePath) {
|
||||
this.templatePath = templatePath;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(Table table, GlobalConfig globalConfig) {
|
||||
|
||||
if (!globalConfig.isControllerGenerateEnable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String controllerPackagePath = globalConfig.getControllerPackage().replace(".", "/");
|
||||
File controllerJavaFile = new File(globalConfig.getSourceDir(), controllerPackagePath + "/" +
|
||||
table.buildControllerClassName() + ".java");
|
||||
|
||||
|
||||
if (controllerJavaFile.exists() && !globalConfig.isControllerOverwriteEnable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Map<String, Object> params = new HashMap<>(2);
|
||||
params.put("table", table);
|
||||
params.put("globalConfig", globalConfig);
|
||||
|
||||
globalConfig.getTemplateEngine().generate(params, templatePath, controllerJavaFile);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package #(globalConfig.controllerPackage);
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
#if(globalConfig.restStyleController)
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
#else
|
||||
import org.springframework.stereotype.Controller;
|
||||
#end
|
||||
#if(globalConfig.controllerSupperClass)
|
||||
import #(table.buildControllerImport())
|
||||
#end
|
||||
|
||||
#if(globalConfig.restStyleController)
|
||||
@RestController
|
||||
#else
|
||||
@Controller
|
||||
#end
|
||||
@RequestMapping("/#(table.getEntityJavaFileName())")
|
||||
#if(globalConfig.controllerSupperClass)
|
||||
public class #(table.table.buildControllerClassName()) extends #(table.buildControllerName()) {
|
||||
|
||||
}
|
||||
#else
|
||||
public class #(table.buildControllerClassName()) {
|
||||
|
||||
}
|
||||
#end
|
||||
Loading…
x
Reference in New Issue
Block a user