mybatis-plus 程式碼生成器(3.5.2)
阿新 • • 發佈:2022-03-08
官方文件:https://baomidou.com/
程式碼生成器配置:https://baomidou.com/pages/981406/ (官網最上方的配置)
建議跟著官方文件自行配置
新建一個springboot專案
建立資料庫mybatis-plus
CREATE DATABASE `mybatis-plus`; USE `mybatis-plus`; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '學生id', `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名', `score` double NULL DEFAULT NULL COMMENT '成績', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '使用者id', `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '使用者名稱', `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密碼', `create_time` date NULL DEFAULT NULL COMMENT '建立時間', `modify_time` date NULL DEFAULT NULL COMMENT '更新時間', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
pom.xml匯入相關依賴
匯入依賴,mpg版本為3.5.2
- 檔案覆蓋屬性fileOverride()從全域性配置移到策略配置中,Entity、Controller、Map
- 統一變數xml的命名,跟之前保持一致,mapperXml->xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.cyr</groupId> <artifactId>mybatis-plus</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybatis-plus</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 需要下面3個依賴 --> <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <!--mybatis-plus-generator 生成器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version> </dependency> <!--velocity模板引擎--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
快速入門程式碼
參考官網的快速生成 => 改成自己的,並建立一個Test方法來生成程式碼
package com.cyr; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.Collections; /** * @author cyr * @version 1.0 * @date 2022/3/8 16:27 */ @SpringBootTest public class CodeGenerator { @Test void CG() { FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatis-plus", "root", "123456") .globalConfig(builder -> { builder.author("cyr") // 設定作者 // .enableSwagger() // 開啟 swagger 模式 // .fileOverride() // 覆蓋已生成檔案 .outputDir(System.getProperty("user.dir") + "/src/main/java"); // 指定輸出目錄 }) .packageConfig(builder -> { builder.parent("com.cyr") // 設定父包名 .moduleName("fastmp") // 設定父包模組名 .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir")+"/src/main/resources/mapper")); // 設定mapperXml生成路徑 }) .strategyConfig(builder -> { builder.addInclude("user", "student") // 設定需要生成的表名 .addTablePrefix("t_", "c_"); // 設定過濾表字首 }) // .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,預設的是Velocity引擎模板 .execute(); } }
fastmp執行結果如下:
完整程式碼
@Test
void CG2() {
FastAutoGenerator
// 資料來源配置
.create("jdbc:mysql://localhost:3306/mybatis-plus", "root", "123456")
// 全域性配置
.globalConfig(builder -> {
builder.author("cyr") // 設定作者
.outputDir(System.getProperty("user.dir") + "/src/main/java") // 指定輸出目錄
.commentDate("yyyy-MM-dd") //註釋日期
.disableOpenDir(); //禁止開啟輸出目錄,預設:true
})
// 包配置
.packageConfig(builder -> {
builder.parent("com.cyr") // 設定父包名
.moduleName("mp") // 設定父包模組名
.entity("pojo") // pojo 實體類包名,其它包名同理
.other("utils") // 自定義檔案包名
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir")+"/src/main/resources/mapper1")); // 設定mapperXml生成路徑
})
// 策略配置
.strategyConfig(builder -> {
builder.addInclude("user", "student") // 設定需要生成的表名
.addTablePrefix("t_", "c_") // 設定過濾表字首
// entity 策略配置
.entityBuilder()
.enableLombok()
.logicDeleteColumnName("deleted") //邏輯刪除欄位名
.naming(NamingStrategy.underline_to_camel) //資料庫表對映到實體的命名策略:下劃線轉駝峰命
.columnNaming(NamingStrategy.underline_to_camel) //資料庫表字段對映到實體的命名策略:下劃線轉駝峰命
.addTableFills(
new Column("create_time", FieldFill.INSERT),
new Column("modify_time", FieldFill.INSERT_UPDATE)
) //新增表字段填充,"create_time"欄位自動填充為插入時間,"modify_time"欄位自動填充為插入修改時間
.enableTableFieldAnnotation() // 開啟生成實體時生成欄位註解
// mapper 策略配置
.mapperBuilder()
.superClass(BaseMapper.class) //設定父類
.formatMapperFileName("%sMapper") //格式化 mapper 檔名稱
.enableMapperAnnotation() //開啟 @Mapper 註解
.formatXmlFileName("%sXml") //格式化 Xml 檔名稱 如 UserXml
// service 策略配置
.serviceBuilder()
.formatServiceFileName("%sService") // 如:UserService
.formatServiceImplFileName("%sServiceImpl") // 如:UserServiceImpl
// controller 策略配置
.controllerBuilder()
.formatFileName("%sController") // 如 UserController
.enableRestStyle(); //開啟生成 @RestController 控制器
})
// 模板配置
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,預設的是Velocity引擎模板
// 執行
.execute();
}
mp執行結果如下: