pom引入:有MP了就不要再引入mybatis了,會出bug的 ```xml com.baomidou mybatis-plus-boot-starter 3.5.3.1 com.baomidou mybatis-plus-generator 3.5.3.1 junit junit 4.13.2 ` ...
pom引入:有MP了就不要再引入mybatis了,會出bug的
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<!--mybatis-plus-generator 生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
代碼主體,隱去ip信息。
package com.sugerqube.XXX.Utils;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;
import java.util.Collections;
public class MPGenerator {
@Test
public void testGenerator() {
//1、配置數據源
FastAutoGenerator.create("jdbc:mysql://XXXXX/XXXXX", "root", "XXXXX")
//2、全局配置
.globalConfig(builder -> {
builder.author("sugerqube") // 設置作者名
.disableOpenDir() //禁止打開輸出目錄,預設打開
.outputDir(System.getProperty("user.dir") + "/src/main/java") //設置輸出路徑:項目的 java 目錄下
.enableSwagger() //開啟 swagger 模式
// .enableKotlin()
// .enableSpringdoc()
.dateType(DateType.ONLY_DATE) //定義生成的實體類中日期的類型 TIME_PACK=LocalDateTime;ONLY_DATE=Date;
.commentDate("yyyy-MM-dd hh:mm:ss"); //註釋日期
})
//3、包配置
.packageConfig(builder -> {
builder.parent("com.sugerqube") // 設置父包名
.moduleName("timecocoon") //設置模塊包名
.entity("entity") //pojo 實體類包名
.service("service") //Service 包名
.serviceImpl("serviceImpl") // ***ServiceImpl 包名
.mapper("mapper") //Mapper 包名
.xml("mapper") //Mapper XML 包名
.controller("controller") //Controller 包名
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper")); //配置 mapper.xml 路徑信息:項目的 resources 目錄下
})
//4、策略配置
.strategyConfig(builder -> {
// builder.addInclude("incident_point", "incident_sum", "incident_line", "incident_cause_effect", "graph") // 設置需要生成的數據表名
builder.addInclude("incident_point") // 設置需要生成的數據表名
.addTablePrefix("t_", "c_") // 設置過濾表首碼
//4.1、實體類策略配置
.entityBuilder()
.enableLombok() //開啟 Lombok
.disableSerialVersionUID() //不實現 Serializable 介面,不生產 SerialVersionUID
.logicDeleteColumnName("deleted") //邏輯刪除欄位名
.naming(NamingStrategy.underline_to_camel) //資料庫表映射到實體的命名策略:下劃線轉駝峰命
.columnNaming(NamingStrategy.underline_to_camel) //資料庫表欄位映射到實體的命名策略:下劃線轉駝峰命
.idType(IdType.ASSIGN_ID)
// .addTableFills(new Column("create_time", FieldFill.INSERT))
// .addTableFills(new Property("modifyTime", FieldFill.INSERT_UPDATE))
.enableTableFieldAnnotation() // 開啟生成實體時生成欄位註解
.enableFileOverride()
//4.2、Controller策略配置
.controllerBuilder()
.formatFileName("%sController") //格式化 Controller 類文件名稱,%s進行匹配表名,如 UserController
.enableRestStyle() //開啟生成 @RestController 控制器
// .enableFileOverride()
//4.3、service 策略配置
.serviceBuilder()
.formatServiceFileName("%sService") //格式化 service 介面文件名稱,%s進行匹配表名,如 UserService
.formatServiceImplFileName("%sServiceImpl") //格式化 service 實現類文件名稱,%s進行匹配表名,如 UserServiceImpl
// .enableFileOverride()
//4.4、Mapper策略配置
.mapperBuilder()
.superClass(BaseMapper.class) //設置父類
.formatMapperFileName("%sMapper") //格式化 mapper 文件名稱
.enableMapperAnnotation() //開啟 @Mapper 註解
// .enableFileOverride()
.formatXmlFileName("%sXml"); //格式化 Xml 文件名稱
})
//6、執行
.execute();
}
}
下次有空寫一篇詳解,帶大家簡單講一下使用,看一下文檔和源碼,新代碼生成器的文檔有一點點跟不上源碼。