From 9c86a5a4b4a5f49baa7ea633fff1ba6d2e67e377 Mon Sep 17 00:00:00 2001
From: liyanqi <15181887205@163.com>
Date: 星期三, 14 九月 2022 16:20:17 +0800
Subject: [PATCH] 修改自动生成代码工具

---
 ycl-generator/pom.xml                                        |   50 +++++++++
 /dev/null                                                    |    5 -
 ycl-generator/src/main/java/com/ycl/MysqlGenerator.java      |  201 ++++++++++++++++++++++++++++++++++++++++
 ycl-generator/src/main/java/com/ycl/base/BaseController.java |   12 ++
 4 files changed, 260 insertions(+), 8 deletions(-)

diff --git a/ycl-generator/pom.xml b/ycl-generator/pom.xml
index ad07430..88b5a24 100644
--- a/ycl-generator/pom.xml
+++ b/ycl-generator/pom.xml
@@ -3,9 +3,10 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.ycl</groupId>
-        <artifactId>ycl-server</artifactId>
-        <version>1.0.0</version>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.7.0</version>
+        <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
     <groupId>com.ycl</groupId>
@@ -21,6 +22,49 @@
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.3.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.0-RELEASE</version>
+        </dependency>
+
+        <!--Hutool Java宸ュ叿鍖�-->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.29</version>
+        </dependency>
+
+        <!--lombok渚濊禆-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- freemarker 妯℃澘寮曟搸 -->
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.23</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
         </dependency>
 
diff --git a/ycl-generator/src/main/java/com/ycl/MyBatisPlusGenerator.java b/ycl-generator/src/main/java/com/ycl/MyBatisPlusGenerator.java
deleted file mode 100644
index ccd89f2..0000000
--- a/ycl-generator/src/main/java/com/ycl/MyBatisPlusGenerator.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package com.ycl;
-
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.setting.dialect.Props;
-import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
-import com.baomidou.mybatisplus.generator.AutoGenerator;
-import com.baomidou.mybatisplus.generator.config.*;
-import com.baomidou.mybatisplus.generator.config.po.LikeTable;
-import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
-import com.baomidou.mybatisplus.generator.config.rules.DateType;
-import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
-import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
-
-import java.util.Collections;
-import java.util.Scanner;
-
-/**
- * MyBatisPlus浠g爜鐢熸垚鍣�
- * Created by macro on 2020/8/20.
- */
-public class MyBatisPlusGenerator {
-
-    public static void main(String[] args) {
-        String projectPath = System.getProperty("user.dir");
-        String moduleName = scanner("妯″潡鍚�");
-        String[] tableNames = scanner("琛ㄥ悕锛屽涓嫳鏂囬�楀彿鍒嗗壊").split(",");
-        // 浠g爜鐢熸垚鍣�
-        AutoGenerator autoGenerator = new AutoGenerator(initDataSourceConfig());
-        autoGenerator.global(initGlobalConfig(projectPath));
-        autoGenerator.packageInfo(initPackageConfig(projectPath,moduleName));
-        autoGenerator.injection(initInjectionConfig(projectPath, moduleName));
-        autoGenerator.template(initTemplateConfig());
-        autoGenerator.strategy(initStrategyConfig(tableNames));
-        autoGenerator.execute(new VelocityTemplateEngine());
-    }
-
-    /**
-     * 璇诲彇鎺у埗鍙板唴瀹逛俊鎭�
-     */
-    private static String scanner(String tip) {
-        Scanner scanner = new Scanner(System.in);
-        System.out.println(("璇疯緭鍏�" + tip + "锛�"));
-        if (scanner.hasNext()) {
-            String next = scanner.next();
-            if (StrUtil.isNotEmpty(next)) {
-                return next;
-            }
-        }
-        throw new MybatisPlusException("璇疯緭鍏ユ纭殑" + tip + "锛�");
-    }
-
-    /**
-     * 鍒濆鍖栧叏灞�閰嶇疆
-     */
-    private static GlobalConfig initGlobalConfig(String projectPath) {
-        return new GlobalConfig.Builder()
-                .outputDir(projectPath + "/ycl-generator/src/main/java")
-                .author("lyq")
-                .disableOpenDir()
-                .enableSwagger()
-                .fileOverride()
-                .dateType(DateType.ONLY_DATE)
-                .build();
-    }
-
-    /**
-     * 鍒濆鍖栨暟鎹簮閰嶇疆
-     */
-    private static DataSourceConfig initDataSourceConfig() {
-        Props props = new Props("generator.properties");
-        String url = props.getStr("dataSource.url");
-        String username = props.getStr("dataSource.username");
-        String password = props.getStr("dataSource.password");
-        return new DataSourceConfig.Builder(url,username,password)
-                .dbQuery(new MySqlQuery())
-                .build();
-    }
-
-    /**
-     * 鍒濆鍖栧寘閰嶇疆
-     */
-    private static PackageConfig initPackageConfig(String projectPath,String moduleName) {
-        Props props = new Props("generator.properties");
-        return new PackageConfig.Builder()
-                .moduleName(moduleName)
-                .parent(props.getStr("package.base"))
-                .entity("entity")
-                .pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/ycl-generator/src/main/resources/mapper/" + moduleName))
-                .build();
-    }
-
-    /**
-     * 鍒濆鍖栨ā鏉块厤缃�
-     */
-    private static TemplateConfig initTemplateConfig() {
-        //鍙互瀵筩ontroller銆乻ervice銆乪ntity妯℃澘杩涜閰嶇疆
-        return new TemplateConfig.Builder().build();
-    }
-
-    /**
-     * 鍒濆鍖栫瓥鐣ラ厤缃�
-     */
-    private static StrategyConfig initStrategyConfig(String[] tableNames) {
-        StrategyConfig.Builder builder = new StrategyConfig.Builder();
-                builder.entityBuilder()
-                .naming(NamingStrategy.underline_to_camel)
-                .columnNaming(NamingStrategy.underline_to_camel)
-                .enableLombok()
-                .formatFileName("%s")
-                .mapperBuilder()
-                .enableBaseResultMap()
-                .formatMapperFileName("%sMapper")
-                .formatXmlFileName("%sMapper")
-                .serviceBuilder()
-                .formatServiceFileName("%sService")
-                .formatServiceImplFileName("%sServiceImpl")
-                .controllerBuilder()
-                .enableRestStyle()
-                .formatFileName("%sController");
-        //褰撹〃鍚嶄腑甯�*鍙锋椂鍙互鍚敤閫氶厤绗︽ā寮�
-        if (tableNames.length == 1 && tableNames[0].contains("*")) {
-            String[] likeStr = tableNames[0].split("_");
-            String likePrefix = likeStr[0] + "_";
-            builder.likeTable(new LikeTable(likePrefix));
-        } else {
-            builder.addInclude(tableNames);
-        }
-        return builder.build();
-    }
-
-    /**
-     * 鍒濆鍖栬嚜瀹氫箟閰嶇疆
-     */
-    private static InjectionConfig initInjectionConfig(String projectPath, String moduleName) {
-        // 鑷畾涔夐厤缃�
-        return new InjectionConfig.Builder().build();
-    }
-
-}
\ No newline at end of file
diff --git a/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java b/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java
new file mode 100644
index 0000000..8597c31
--- /dev/null
+++ b/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java
@@ -0,0 +1,201 @@
+package com.ycl;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableFill;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+import com.ycl.base.BaseController;
+
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/14
+ */
+public class MysqlGenerator {
+    private static final String PN_ENTITY = "entity";
+    private static final String PN_CONTROLLER = "controller";
+    private static final String PN_MAPPER = "mapper";
+    private static final String PN_SERVICE = "service";
+    private static final String PN_SERVICE_IMPL = "impl";
+    private static final String PN_DELIMITER = ".";
+
+
+    /**
+     * <p>
+     * 璇诲彇鎺у埗鍙板唴瀹�
+     * </p>
+     */
+    public static String scanner(String tip) {
+        Scanner scanner = new Scanner(System.in);
+        StringBuilder help = new StringBuilder();
+        help.append("璇疯緭鍏�" + tip + "锛�");
+        System.out.println(help.toString());
+        if (scanner.hasNext()) {
+            String ipt = scanner.next();
+            if (StringUtils.isNotEmpty(ipt)) {
+                return ipt;
+            }
+        }
+        throw new MybatisPlusException("璇疯緭鍏ユ纭殑" + tip + "锛�");
+    }
+
+    public static void main(String[] args) {
+        // 浠g爜鐢熸垚鍣�
+        AutoGenerator mpg = new AutoGenerator();
+
+        // 鍏ㄥ眬閰嶇疆
+        GlobalConfig gc = new GlobalConfig();
+        String projectPath = System.getProperty("user.dir");
+        gc.setOutputDir(projectPath + "/ycl-generator/src/main/java");
+        gc.setAuthor("lyq");//浣滆��
+        gc.setBaseResultMap(true); //mapper.xml 鐢熸垚 ResultMap
+        gc.setBaseColumnList(true); //mapper.xml 鐢熸垚 ColumnList
+//        gc.setSwagger2(true);
+        gc.setOpen(false);
+        // gc.setSwagger2(true); 瀹炰綋灞炴�� Swagger2 娉ㄨВ
+        // 鏄惁瑕嗙洊宸叉湁鏂囦欢
+        gc.setFileOverride(true);
+        mpg.setGlobalConfig(gc);
+
+        // 鏁版嵁婧愰厤缃�
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setUrl("jdbc:mysql://42.193.1.25:3306/sccg?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false");
+        // dsc.setSchemaName("public");
+        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+        dsc.setUsername("root");
+        dsc.setPassword("321$YcYl@1970!");
+        mpg.setDataSource(dsc);
+
+        // 鍖呴厤缃�
+        PackageConfig pc = new PackageConfig();
+//        pc.setModuleName(scanner("妯″潡鍚�"));
+        pc.setModuleName(null);
+        pc.setParent("com.ycl");
+        String packageName = scanner("璇疯緭鍏ュ寘鍚�");
+        //鑷畾涔夋墍鍦ㄥ寘鐨勫悕绉�  鍩烘湰娌″繀瑕�
+        pc.setEntity(PN_ENTITY + PN_DELIMITER + packageName);
+        pc.setController(PN_CONTROLLER + PN_DELIMITER + packageName);
+        pc.setMapper(PN_MAPPER + PN_DELIMITER + packageName);
+        pc.setService(PN_SERVICE + PN_DELIMITER + packageName);
+        pc.setServiceImpl(PN_SERVICE + PN_DELIMITER + packageName + PN_DELIMITER + PN_SERVICE_IMPL);
+
+        //pc.setMapper("com.cikers.ps.mapper");
+
+        mpg.setPackageInfo(pc);
+        // 鑷畾涔夐厤缃�
+        InjectionConfig cfg = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                // to do nothing
+            }
+        };
+
+        // 濡傛灉妯℃澘寮曟搸鏄� freemarker
+        String templatePath = "/templates/mapper.xml.ftl";
+        // 濡傛灉妯℃澘寮曟搸鏄� velocity
+//             String templatePath = "/templates/mapper.xml.vm";
+
+        // 鑷畾涔夎緭鍑洪厤缃�
+        List<FileOutConfig> focList = new ArrayList<>();
+        // 鑷畾涔夐厤缃細琚紭鍏堣緭鍑�
+        focList.add(new FileOutConfig(templatePath) {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                // 鑷畾涔夎緭鍑烘枃浠跺悕 锛� 濡傛灉浣� Entity 璁剧疆浜嗗墠鍚庣紑銆佹澶勬敞鎰� xml 鐨勫悕绉颁細璺熺潃鍙戠敓鍙樺寲锛侊紒
+//                return projectPath + "/coinyee-contract-generator/src/main/resources/mapper/" + pc.getModuleName()
+//                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+                return projectPath + "/ycl-generator/src/main/resources/mapper/"
+                        + packageName + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+            }
+        });
+        /*
+        cfg.setFileCreate(new IFileCreate() {
+            @Override
+            public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
+                // 鍒ゆ柇鑷畾涔夋枃浠跺す鏄惁闇�瑕佸垱寤�
+                checkDir("璋冪敤榛樿鏂规硶鍒涘缓鐨勭洰褰曪紝鑷畾涔夌洰褰曠敤");
+                if (fileType == FileType.MAPPER) {
+                    // 宸茬粡鐢熸垚 mapper 鏂囦欢鍒ゆ柇瀛樺湪锛屼笉鎯抽噸鏂扮敓鎴愯繑鍥� false
+                    return !new File(filePath).exists();
+                }
+                // 鍏佽鐢熸垚妯℃澘鏂囦欢
+                return true;
+            }
+        });
+        */
+        cfg.setFileOutConfigList(focList);
+        mpg.setCfg(cfg);
+
+        // 閰嶇疆妯℃澘
+        TemplateConfig templateConfig = new TemplateConfig();
+
+        // 閰嶇疆鑷畾涔夎緭鍑烘ā鏉�
+        //鎸囧畾鑷畾涔夋ā鏉胯矾寰勶紝娉ㄦ剰涓嶈甯︿笂.ftl/.vm, 浼氭牴鎹娇鐢ㄧ殑妯℃澘寮曟搸鑷姩璇嗗埆
+        // templateConfig.setEntity("templates/entity2.java");
+        // templateConfig.setService();
+        // templateConfig.setController();
+
+        templateConfig.setXml(null);
+        mpg.setTemplate(templateConfig);
+
+        // 绛栫暐閰嶇疆
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        //strategy.setSuperEntityClass("浣犺嚜宸辩殑鐖剁被瀹炰綋,娌℃湁灏变笉鐢ㄨ缃�!");
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        //鍘婚櫎瀛楁鍓嶇紑
+        strategy.setFieldPrefix("");
+
+        List<TableFill> tableFills = new ArrayList<>();
+
+        TableFill createTimeFill = new TableFill("createTime", FieldFill.INSERT);
+        TableFill modifiedTimeFill = new TableFill("modifiedTime", FieldFill.UPDATE);
+
+        tableFills.add(createTimeFill);
+        tableFills.add(modifiedTimeFill);
+
+//        strategy.setEntityTableFieldAnnotationEnable(true);
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        //strategy.setSuperEntityClass("浣犺嚜宸辩殑鐖剁被瀹炰綋,娌℃湁灏变笉鐢ㄨ缃�!");
+        strategy.setSuperControllerClass(BaseController.class);
+//        strategy.setSuperEntityClass(BaseEntity.class);
+        strategy.setSuperEntityColumns("createTime", "lastModify", "isDeleted");
+        strategy.setTableFillList(tableFills);
+        strategy.setEntityBooleanColumnRemoveIsPrefix(false);
+        strategy.setLogicDeleteFieldName("isDeleted");
+
+        strategy.setVersionFieldName("version");
+        strategy.setEntityTableFieldAnnotationEnable(true);
+
+        strategy.setEntityLombokModel(true);
+        strategy.setRestControllerStyle(true);
+
+        strategy.setEntityLombokModel(true);
+        strategy.setRestControllerStyle(true);
+        // 鍏叡鐖剁被
+        // strategy.setSuperControllerClass("浣犺嚜宸辩殑鐖剁被鎺у埗鍣�,娌℃湁灏变笉鐢ㄨ缃�!");
+        // 鍐欎簬鐖剁被涓殑鍏叡瀛楁
+//            strategy.setSuperEntityColumns("id");
+        String[] split = scanner("琛ㄥ悕锛屽涓嫳鏂囬�楀彿鍒嗗壊").split(",");
+        strategy.setInclude(split);
+        strategy.setControllerMappingHyphenStyle(true);
+//        strategy.setTablePrefix(pc.getModuleName() + "_");
+        //鍘绘帀琛ㄥ墠缂�
+        strategy.setTablePrefix("ums_");
+        mpg.setStrategy(strategy);
+        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+        mpg.execute();
+    }
+}
diff --git a/ycl-generator/src/main/java/com/ycl/base/BaseController.java b/ycl-generator/src/main/java/com/ycl/base/BaseController.java
new file mode 100644
index 0000000..117f23e
--- /dev/null
+++ b/ycl-generator/src/main/java/com/ycl/base/BaseController.java
@@ -0,0 +1,12 @@
+package com.ycl.base;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/14
+ */
+@RestController
+public class BaseController {
+}
diff --git a/ycl-generator/src/main/resources/generator.properties b/ycl-generator/src/main/resources/generator.properties
deleted file mode 100644
index 53b55d9..0000000
--- a/ycl-generator/src/main/resources/generator.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-dataSource.url=jdbc:mysql://42.193.1.25:3306/sccg?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
-dataSource.driverName=com.mysql.cj.jdbc.Driver
-dataSource.username=root
-dataSource.password=321$YcYl@1970!
-package.base=com.ycl
\ No newline at end of file

--
Gitblit v1.8.0