1. 程式人生 > 其它 >設計模式 -> 結構型 - 裝飾(Decorator)

設計模式 -> 結構型 - 裝飾(Decorator)

1. 在spring boot 專案中生成

spring boot專案需要配置資料庫連線資訊

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/你的資料庫?useSSL=false
spring.datasource.username=你的資料庫使用者名稱
spring.datasource.password=你資料庫的密碼

jar 包

<!-- mysql 5.7(spring boot專案需要在application.properties中配置資料庫連線資訊) -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.47</version>
</dependency>

<!-- mybatis-plus -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.5.1</version>
</dependency>

<!-- mybatis-generator -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-generator</artifactId>
	<version>3.5.1</version>
 </dependency>

<!-- freemarker -->
<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.30</version>
</dependency>

<!-- test -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
    	<exclusion>
    		<groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>

mybatis-plus 程式碼生成器(新)

// spring boot的單元測試
@SpringBootTest
public class CodeGenerator {
    // 處理 all(全表) 情況
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

    @Test
    public void codeGenerator() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/你的資料庫?useSSL=false",
                "你的資料庫使用者名稱", "你資料庫的密碼")
                .globalConfig(builder -> {
                    builder.author("liqiju") // 設定作者
                             // .enableSwagger() // 開啟 swagger 模式
                            .fileOverride() // 覆蓋已生成檔案
                            .outputDir("F://generator"); // 指定輸出目錄
                })
                .packageConfig(builder -> {
                    builder.parent("com.xxx") // 設定父包名
                            //.moduleName("system") // 設定父包模組名
                            .entity("entity")
                            .service("service")
                            .serviceImpl("service.impl")
                            .controller("controller")
                            .mapper("mapper")
                            .xml("mapper")
                            // 設定mapper.xml生成路徑
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "F://generator")); 

                })
                .strategyConfig(builder -> {
                    builder
                        	.addInclude(getTables("all")) // 設定需要生成的表名
                        	// 指定想要生成程式碼的表
                            // .addInclude("user", "role")
                            // service策略配置
                            .serviceBuilder()
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl")
                            // entity策略配置
                            .entityBuilder()
                            // 資料庫表對映到實體的命名策略
                            .naming(NamingStrategy.underline_to_camel)
                            // 資料庫表字段對映到實體的命名策略
                            .columnNaming(NamingStrategy.no_change)
                            // 開啟lombok模型
                            .enableLombok()
                            // controller策略設定
                            .controllerBuilder()
                            .formatFileName("%sController")
                            .enableRestStyle()
                            .enableHyphenStyle()
                            // mapper策略設定
                            .mapperBuilder()
                            // 生成通用的resultMap
                            .enableBaseResultMap()
                            .enableBaseColumnList()
                            .superClass(BaseMapper.class)
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()
                            .formatXmlFileName("%sMapper");
                })
            	// 使用Freemarker引擎模板,預設的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine()) 
                .execute();
    }
}

2. 在其他專案中生成

jar 包

<!-- mysql 5.7 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.47</version>
</dependency>

<!-- mybatis-plus -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus</artifactId>
	 <version>3.5.1</version>
</dependency>

<!-- mybatis-generator -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-generator</artifactId>
	<version>3.5.1</version>
 </dependency>

<!-- freemarker -->
<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.30</version>
</dependency>

<!-- 其他專案 -->
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-simple</artifactId>
	<version>1.7.32</version>
	<scope>test</scope>
</dependency>

mybatis-plus 程式碼生成器(新)

// 單元測試
public class CodeGenerator {
    // 處理 all(全表) 情況
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

    @Test
    public void codeGenerator() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/你的資料庫?useSSL=false",
                "你的資料庫使用者名稱", "你資料庫的密碼")
                .globalConfig(builder -> {
                    builder.author("liqiju") // 設定作者
                             // .enableSwagger() // 開啟 swagger 模式
                            .fileOverride() // 覆蓋已生成檔案
                            .outputDir("F://generator"); // 指定輸出目錄
                })
                .packageConfig(builder -> {
                    builder.parent("com.xxx") // 設定父包名
                            //.moduleName("system") // 設定父包模組名
                            .entity("entity")
                            .service("service")
                            .serviceImpl("service.impl")
                            .controller("controller")
                            .mapper("mapper")
                            .xml("mapper")
                            // 設定mapper.xml生成路徑
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "F://generator")); 

                })
                .strategyConfig(builder -> {
                    builder
                        	.addInclude(getTables("all")) // 設定需要生成的表名
                        	// 指定想要生成程式碼的表
                            // .addInclude("user", "role")
                            // service策略配置
                            .serviceBuilder()
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl")
                            // entity策略配置
                            .entityBuilder()
                            // 資料庫表對映到實體的命名策略
                            .naming(NamingStrategy.underline_to_camel)
                            // 資料庫表字段對映到實體的命名策略
                            .columnNaming(NamingStrategy.no_change)
                            // 開啟lombok模型
                            .enableLombok()
                            // controller策略設定
                            .controllerBuilder()
                            .formatFileName("%sController")
                            .enableRestStyle()
                            .enableHyphenStyle()
                            // mapper策略設定
                            .mapperBuilder()
                            // 生成通用的resultMap
                            .enableBaseResultMap()
                            .enableBaseColumnList()
                            .superClass(BaseMapper.class)
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()
                            .formatXmlFileName("%sMapper");
                })
            	// 使用Freemarker引擎模板,預設的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine()) 
                .execute();
    }
}