分享一下mybatisPlus新代碼生成器3.5.1以上

来源:https://www.cnblogs.com/sugerqube/archive/2023/05/19/17415978.html
-Advertisement-
Play Games

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();
    }

}

下次有空寫一篇詳解,帶大家簡單講一下使用,看一下文檔和源碼,新代碼生成器的文檔有一點點跟不上源碼。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2023年5月9日-5月11日,HUAWEI P60系列及旗艦產品發佈會在歐洲德國、中東非阿聯酋、亞太馬來西亞、拉美墨西哥陸續舉辦,為消費者帶來高端影像旗艦HUAWEI P60 Pro及系列全場景智能新品。其中在亞太站,還傳遞了一個重要消息:2023年6月30日之前,購買HUAWEI P60系列及折 ...
  • **本文為千鋒資深前端教學老師帶來的【JavaScript全解析】系列,文章內含豐富的代碼案例及配圖,從0到1講解JavaScript相關知識點,致力於教會每一個人學會JS!** **文末有本文重點總結,可以收藏慢慢看\~ 更多技術類內容,主頁關註一波!** # ES6函數中參數的預設值 給函數的形 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 loading的展示和取消可以說是每個前端對介面的時候都要關心的一個問題。這篇文章將要幫你解決的就是如何結合axios更加簡潔的處理loading展示與取消的邏輯。 首先在我們平時處理業務的時候loading一般分為三種:按鈕loadin ...
  • 馬上就要520了,也許你能用到這款《文生圖》工具!把字藏在圖裡,發給女神,大膽去表白吧~,文末附源碼喲!預覽地址:https://dombro.site/tools#/text-image ...
  • 當定義和調用函數時,JavaScript 函數對象會自動具有一些特定的屬性,以下是一些常見的屬性和方法。 1. arguments : arguments 是一個類數組對象,它包含了函數調用時傳遞的參數。它允許你在函數內部訪問傳遞給函數的參數列表,即使在函數定義時未明確聲明這些參數。可以通過索引訪問 ...
  • 關於JWT,可以說是分散式系統下的一個利器,我在我的很多項目實踐中,認證系統的第一選擇都是JWT。它的優勢會讓你欲罷不能,就像你領優惠券一樣。 ...
  • 有很多人問過我,學習開源項目消息推送平臺austin需要有什麼基礎,我往往會回答:**有`SpringBoot`基礎就夠了**。 我在幾年前總結過從零學習`Java`的路線,現在看來也沒有很過時: - `Java`基礎:流程式控制制-->面向對象(包括語法)-->集合-->`IO`流-->異常-->多線 ...
  • # C++ 如何快速實現一個容器的迭代器 ## 引言 C++的標準庫中的容器都會提供迭代器,如果一個容器滿足forward_range,那麼這個容器一般會提供以下成員類型和函數: - iterator - const_iterator - begin - end - begin - cend 如果該 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...