package com.cloud.codetool.config.codetool.controller;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.cloud.codetool.config.codetool.vo.RestData;
import com.cloud.codetool.config.codetool.vo.TemplateParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
@RestController
@Api(tags = "代码生成工具")
public class CodeTempController {
@Value(value = "${spring.datasource.druid.url}")
private String url;
@Value(value = "${spring.datasource.druid.username}")
private String userName;
@Value(value = "${spring.datasource.druid.password}")
private String passWord;
@Value(value = "${code.tool.package}")
private String packagePath;
@ApiOperation(value = "按照系统数据库表生成Controler、Service、Mapper、Entity")
@GetMapping("/code/generate")
public RestData<?> codeTemplate(@RequestBody TemplateParam templateParam ){
String projectPath = new File("").getAbsolutePath()+"//src//main//java//";
new TemplateConfig.Builder()/*.serviceImpl("/templates/serviceImpl.java")*/;
FastAutoGenerator.create(url,userName,passWord)
//全局配置
.globalConfig((scanner, builder) -> builder
.author(templateParam.getAuthor())
.enableSwagger()
//开启覆盖已生成的文件。注释掉则关闭覆盖。
//.fileOverride()
//禁止打开生成的文件目录。
.disableOpenDir()
//设置时间类型 Date(默认使用Java8的时间类型,部分数据库可能无法识别)
.dateType(DateType.ONLY_DATE)
//生成文件的输出路径
.outputDir(projectPath))
//包设置
.packageConfig((scanner, builder) -> builder
//设置代码包路径
.parent(packagePath+"."+templateParam.getParentPackage()))
//策略配置
.strategyConfig((scanner, builder) -> builder
//需要使用表生成的代码(传入all时,所有表生成)
.addInclude(getTables(templateParam.getTableName()))
.entityBuilder()
//逻辑删除配置,当字段名称为deleted,会设置逻辑删除。会在实体类的该字段属性前加注解[@TableLogic](这里已经在/resources/templates/entity.java.ftl中配置了删除)
//.logicDeleteColumnName("DELETE_FLAG")
//添加字段描述
.enableLombok()
.addTableFills(
//设定创建时间 ,更新时间自动填充
new Column("create_time", FieldFill.INSERT),
new Column("update_time", FieldFill.INSERT_UPDATE)
)
.enableTableFieldAnnotation()
//Mapper.xml策略配置
.mapperBuilder()
//启用 BaseResultMap 生成。会在mapper.xml文件生成[通用查询映射结果]配置。
.enableBaseResultMap()
//启用 BaseColumnList。会在mapper.xml文件生成[通用查询结果列 ]配置
.enableBaseColumnList()
.build())
//模板引擎配置,Freemarker
.templateEngine(new FreemarkerTemplateEngine())
.execute();
new InjectionConfig
.Builder()
.beforeOutputFile((tableInfo, objectMap) -> {})
.build();
return RestData.success("代码已生成,您可以编译源代码,重启项目即可看到生成的默认接口!");
}
/**
* @description:处理all的时候
* @author:hutao
* @mail:hutao_2017@aliyun.com
* @date:2022年2月18日 上午11:32:54
*/
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本文主要介绍openAPI(Swagger3)和Mybatis-Plus代码生成器技术,然后将两者进行集成,并且自我定制,达到使用生成代码的同时,能够按照我们的要求定制我们所需要的代码,以及注释,并且和openAPI进行集成,形成openAPI(Swagger3)在线接口文档。阅读者最好有swagger基础和mybatis-plus基础
资源详情
资源评论
资源推荐
收起资源包目录
cloud-code-tool.rar (23个子文件)
cloud-code-tool
pom.xml 3KB
.factorypath 15KB
src
main
resources
META-INF
additional-spring-configuration-metadata.json 1KB
application.yml 1KB
templates
controller.java.ftl 4KB
service.java.ftl 395B
serviceImpl.java.ftl 802B
mapper.xml.ftl 1KB
mapper.java.ftl 546B
entity.java.ftl 2KB
java
com
cloud
codetool
config
web
redis
codetool
config
MybatisPlusConfig.java 1KB
CreateUpdateConfig.java 850B
SwaggerConfiguration.java 2KB
controller
CodeTempController.java 4KB
service
QueryService.java 4KB
vo
RestData.java 3KB
ConditionQuery.java 443B
Condition.java 887B
TemplateParam.java 669B
PageQuery.java 875B
CodeToolApplication.java 328B
.project 720B
.classpath 2KB
共 23 条
- 1
歪桃
- 粉丝: 276
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0