1. 程式人生 > 其它 >mybatis-plus 程式碼生成器(3.5.2)

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

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