官方文檔: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運行結果如下: