Browse Source

增加自定义模板生成代码示例

yuxiaobin 7 years ago
parent
commit
123130630b

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

@@ -1,13 +1,18 @@
 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;
 
@@ -85,6 +90,7 @@ public class CodeGeneratorTest {
             .setDriverName("com.mysql.jdbc.Driver");
         StrategyConfig strategyConfig = new StrategyConfig();
         strategyConfig
+//            .setVersionFieldName("version")
             .setCapitalMode(true)
             .setEntityLombokModel(false)
             .setDbColumnUnderline(true)
@@ -95,6 +101,7 @@ public class CodeGeneratorTest {
         config.setActiveRecord(false)
             .setIdType(tableIdType)
             .setAuthor("K神带你飞")
+//            .setBaseResultMap(true)
             .setOutputDir("d:\\codeGen")
             .setFileOverride(true);
         if (!serviceClassNameStartWithI) {
@@ -110,4 +117,65 @@ public class CodeGeneratorTest {
                     .setEntity("entity")
             ).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");
+    }
 }

+ 6 - 0
mybatis-plus-generate/src/test/resources/templates/mapper2.xml.vm

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="${package.Mapper}.${table.mapperName}">
+
+abc=${cfg.abc}
+</mapper>