From 22aefbf7c55e2c56abb9f8ca11e3535b90416542 Mon Sep 17 00:00:00 2001 From: ljh01459796 Date: Sun, 25 Jun 2023 16:43:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orion-ops-dependencies/pom.xml | 6 + .../pom.xml | 4 + .../mybatis/generator/CodeGenerator.java | 166 ++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/generator/CodeGenerator.java diff --git a/orion-ops-dependencies/pom.xml b/orion-ops-dependencies/pom.xml index b63bc82a..db8caf02 100644 --- a/orion-ops-dependencies/pom.xml +++ b/orion-ops-dependencies/pom.xml @@ -23,6 +23,7 @@ 1.5.5.Final 3.5.3.1 3.5.3.1 + 2.3 1.2.16 @@ -139,6 +140,11 @@ mybatis-plus-generator ${mybatis-plus-generator.version} + + org.apache.velocity + velocity-engine-core + ${velocity.version} + diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/pom.xml b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/pom.xml index e07cc1f3..e4b65461 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/pom.xml +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/pom.xml @@ -42,6 +42,10 @@ com.baomidou mybatis-plus-generator + + org.apache.velocity + velocity-engine-core + \ No newline at end of file diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/generator/CodeGenerator.java b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/generator/CodeGenerator.java new file mode 100644 index 00000000..126b1d02 --- /dev/null +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/java/com/orion/ops/framework/mybatis/generator/CodeGenerator.java @@ -0,0 +1,166 @@ +package com.orion.ops.framework.mybatis.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; +import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery; +import com.baomidou.mybatisplus.generator.config.rules.DateType; +import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; +import com.baomidou.mybatisplus.generator.config.rules.IColumnType; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.orion.lang.constant.Const; +import com.orion.ops.framework.mybatis.domain.BaseDO; +import com.orion.ops.framework.mybatis.mapper.IMapper; + +/** + * @author Jiahang Li + */ +public class CodeGenerator { + + public static void main(String[] args) { + String outputDir = "D:/MP/"; + String author = Const.ORION_AUTHOR; + String url = "jdbc:mysql://127.0.0.1:3306/orion-ops-pro?characterEncoding=utf8"; + String username = "root"; + String password = "Data@123456"; + + // 表名 + String[] tables = {"user_info"}; + // 模块 + String module = "user"; + + // 执行 + runGenerator(outputDir, author, + url, username, password, + tables, + module); + } + + /** + * 代码生成 + */ + private static void runGenerator(String outputDir, + String author, + String url, + String username, + String password, + String[] tables, + String module) { + + // 全局配置 + GlobalConfig gbConfig = new GlobalConfig.Builder() + // 设置作者 + .author(author) + // 生成路径 + .outputDir(outputDir) + // 生成 swagger 注解 + .enableSwagger() + // 生成 spring doc 注解 + .enableSpringdoc() + // date类型 + .dateType(DateType.ONLY_DATE) + // 注释时间 + .commentDate("yyyy-MM-dd") + // 构建 + .build(); + + // 数据源配置 + DataSourceConfig dsConfig = new DataSourceConfig.Builder(url, username, password) + // 转换器 + .typeConvert(new MySqlTypeConvert() { + @Override + public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) { + if (fieldType.toLowerCase().contains("tinyint")) { + return DbColumnType.INTEGER; + } + return super.processTypeConvert(globalConfig, fieldType); + } + }) + // 查询器 + .dbQuery(new MySqlQuery()) + // 构建 + .build(); + + // 策略配置 + StrategyConfig stConfig = new StrategyConfig.Builder() + // 生成的表 + .addInclude(tables) + // 全局大写命名 + .enableCapitalMode() + // 实体配置 + .entityBuilder() + // 下滑线转驼峰命名策略 + .naming(NamingStrategy.underline_to_camel) + // 实体父类 + .superClass(BaseDO.class) + // 实体父类字段 + .addSuperEntityColumns("create_time", "update_time", "creator", "updater", "deleted") + // 启用lombok + .enableLombok() + // 主键策略 + .idType(IdType.AUTO) + // 添加字段注解 + .enableTableFieldAnnotation() + // 实体文件名称 + .formatFileName("%sDO") + // 覆盖实体文件 + .enableFileOverride() + // mapper 配置 + .mapperBuilder() + // mapper 父类 + .superClass(IMapper.class) + // 生成 BaseResultMap + .enableBaseResultMap() + // 生成 BaseColumnList + .enableBaseColumnList() + // mapper 文件名称 + .formatMapperFileName("%sDAO") + // xml 文件名称 + .formatXmlFileName("%sMapper") + // 覆盖 mapper 文件 + .enableFileOverride() + // 构建 + .build(); + + // 包名策略配置 + PackageConfig pkConfig = new PackageConfig.Builder() + // 声明父包 + .parent("com.orion.ops.module." + module) + // 实体类的包 + .entity("entity.domain") + // 映射接口的包 + .mapper("dao") + // 映射文件的包 + .xml("mapper") + // service接口的包 + .service("ignore.service") + // serviceImpl接口的包 + .serviceImpl("ignore.service.impl") + // controller接口的包 + .controller("ignore.controller") + // 构建 + .build(); + + // 整合配置 + AutoGenerator ag = new AutoGenerator(dsConfig) + // 整合全局配置 + .global(gbConfig) + // 整合表名配置 + .strategy(stConfig) + // 整合包名策略 + .packageInfo(pkConfig) + // TODO 自定义convert文件 + // .injection() + // TODO 自定义模板以及convert文件 + // .template() + ; + + // 执行 + ag.execute(); + } + +}