Browse Source

分开自定义模板代码生成实例

yuxiaobin 7 years ago
parent
commit
f831832632

+ 108 - 0
mybatis-plus-generate/src/test/java/com/baomidou/mybatisplus/test/generator/CodeGeneratorCustomTemplate.java

@@ -0,0 +1,108 @@
+package com.baomidou.mybatisplus.test.generator;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+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.TemplateConfig;
+import com.baomidou.mybatisplus.generator.config.rules.DbType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+/**
+ * <p>
+ * 自定义模板,生成代码
+ * 仅示例了mapper.xml文件
+ * </p>
+ *
+ * @author yuxiaobin
+ * @date 2018/5/23
+ */
+public class CodeGeneratorCustomTemplate {
+
+    /**
+     * 是否强制带上注解
+     */
+    boolean enableTableFieldAnnotation = false;
+    /**
+     * 生成的注解带上IdType类型
+     */
+    IdType tableIdType = null;
+    /**
+     * 是否去掉生成实体的属性名前缀
+     */
+    String[] fieldPrefix = null;
+    /**
+     * 生成的Service 接口类名是否以I开头
+     * 默认是以I开头
+     * user表 -> IUserService, UserServiceImpl
+     */
+    boolean serviceClassNameStartWithI = true;
+
+    private void generateByTablesWithInjectConfig(String packageName, String... tableNames) {
+        GlobalConfig config = new GlobalConfig();
+        String dbUrl = "jdbc:mysql://localhost:3306/mybatis-plus";
+        DataSourceConfig dataSourceConfig = new DataSourceConfig();
+        dataSourceConfig.setDbType(DbType.MYSQL)
+            .setUrl(dbUrl)
+            .setUsername("root")
+            .setPassword("")
+            .setDriverName("com.mysql.jdbc.Driver");
+        StrategyConfig strategyConfig = new StrategyConfig();
+        strategyConfig
+            .setVersionFieldName("version")
+            .setCapitalMode(true)
+            .setEntityLombokModel(false)
+            .setDbColumnUnderline(true)
+            .setNaming(NamingStrategy.underline_to_camel)
+            .entityTableFieldAnnotationEnable(enableTableFieldAnnotation)
+            .fieldPrefix(fieldPrefix)//test_id -> id, test_type -> type
+            .setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
+        config.setActiveRecord(false)
+            .setIdType(tableIdType)
+            .setAuthor("K神带你飞")
+            .setBaseResultMap(true)
+            .setOutputDir("d:\\codeGen")
+            .setFileOverride(true);
+        if (!serviceClassNameStartWithI) {
+            config.setServiceName("%sService");
+        }
+        TemplateConfig templateConfig = new TemplateConfig();
+        templateConfig.setXml("/templates/mapper2.xml");
+        InjectionConfig injectionConfig = new InjectionConfig() {
+            @Override
+            public void initMap() {//自定义参数
+                Map<String, Object> map = new HashMap<>();
+                map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
+                this.setMap(map);
+            }
+        };
+        new AutoGenerator().setGlobalConfig(config)
+            .setTemplate(templateConfig)//自定义模板路径
+            .setCfg(injectionConfig)
+            .setDataSource(dataSourceConfig)
+            .setStrategy(strategyConfig)
+            .setPackageInfo(
+                new PackageConfig()
+                    .setParent(packageName)
+                    .setController("controller")
+                    .setEntity("entity")
+            ).execute();
+    }
+
+
+    @Test
+    public void generateCodeWithInjectConfig() {
+        String packageName = "com.baomidou.springboot";
+        enableTableFieldAnnotation = false;
+        tableIdType = null;
+        generateByTablesWithInjectConfig(packageName, "user");
+    }
+}

+ 0 - 65
mybatis-plus-generate/src/test/java/com/baomidou/mybatisplus/test/generator/CodeGeneratorTest.java

@@ -1,18 +1,13 @@
 package com.baomidou.mybatisplus.test.generator;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.junit.Test;
 
 import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.generator.AutoGenerator;
-import com.baomidou.mybatisplus.generator.InjectionConfig;
 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.TemplateConfig;
 import com.baomidou.mybatisplus.generator.config.rules.DbType;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 
@@ -118,64 +113,4 @@ public class CodeGeneratorTest {
             ).execute();
     }
 
-
-    private void generateByTablesWithInjectConfig(String packageName, String... tableNames) {
-        GlobalConfig config = new GlobalConfig();
-        String dbUrl = "jdbc:mysql://localhost:3306/mybatis-plus";
-        DataSourceConfig dataSourceConfig = new DataSourceConfig();
-        dataSourceConfig.setDbType(DbType.MYSQL)
-            .setUrl(dbUrl)
-            .setUsername("root")
-            .setPassword("")
-            .setDriverName("com.mysql.jdbc.Driver");
-        StrategyConfig strategyConfig = new StrategyConfig();
-        strategyConfig
-            .setVersionFieldName("version")
-            .setCapitalMode(true)
-            .setEntityLombokModel(false)
-            .setDbColumnUnderline(true)
-            .setNaming(NamingStrategy.underline_to_camel)
-            .entityTableFieldAnnotationEnable(enableTableFieldAnnotation)
-            .fieldPrefix(fieldPrefix)//test_id -> id, test_type -> type
-            .setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
-        config.setActiveRecord(false)
-            .setIdType(tableIdType)
-            .setAuthor("K神带你飞")
-            .setBaseResultMap(true)
-            .setOutputDir("d:\\codeGen")
-            .setFileOverride(true);
-        if (!serviceClassNameStartWithI) {
-            config.setServiceName("%sService");
-        }
-        TemplateConfig templateConfig = new TemplateConfig();
-        templateConfig.setXml("/templates/mapper2.xml");
-        InjectionConfig injectionConfig = new InjectionConfig() {
-            @Override
-            public void initMap() {
-                Map<String, Object> map = new HashMap<>();
-                map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
-                this.setMap(map);
-            }
-        };
-        new AutoGenerator().setGlobalConfig(config)
-            .setTemplate(templateConfig)
-            .setCfg(injectionConfig)
-            .setDataSource(dataSourceConfig)
-            .setStrategy(strategyConfig)
-            .setPackageInfo(
-                new PackageConfig()
-                    .setParent(packageName)
-                    .setController("controller")
-                    .setEntity("entity")
-            ).execute();
-    }
-
-
-    @Test
-    public void generateCodeWithInjectConfig() {
-        String packageName = "com.baomidou.springboot";
-        enableTableFieldAnnotation = false;
-        tableIdType = null;
-        generateByTablesWithInjectConfig(packageName, "user");
-    }
 }