設計模式 -> 結構型 - 裝飾(Decorator)
阿新 • • 發佈:2022-05-12
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();
}
}