最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis Flex代碼生成器詳解

 更新時(shí)間:2025年11月04日 09:30:33   作者:小林學(xué)習(xí)編程  
MybatisFlex是一個(gè)輕量級(jí)、高性能的MyBatis增強(qiáng)框架,支持多種數(shù)據(jù)庫(kù)操作和靈活的SQL生成,文章還介紹了MybatisFlex代碼生成器,可以通過(guò)數(shù)據(jù)庫(kù)表快速生成Entity、Mapper、Service和Controller等代碼

1、什么是Mybatis Flex

MyBatis-Flex是一個(gè)優(yōu)雅的 MyBatis增強(qiáng)框架

MyBatis-Flex 是一個(gè)優(yōu)雅的 MyBatis 增強(qiáng)框架,它非常輕量、同時(shí)擁有極高的性能與靈活性。

我們可以輕松的使用 Mybaits-Flex 鏈接任何數(shù)據(jù)庫(kù),其內(nèi)置的 QueryWrapper^亮點(diǎn) 幫助我們極大的減少了 SQL 編寫(xiě)的工作的同時(shí),減少出錯(cuò)的可能性。

總而言之,MyBatis-Flex 能夠極大地提高我們的開(kāi)發(fā)效率和開(kāi)發(fā)體驗(yàn),讓我們有更多的時(shí)間專(zhuān)注于自己的事情。

MyBatis-Flex特征

他的作用和Mybatis Flex一樣,都是對(duì)傳統(tǒng)操作數(shù)據(jù)庫(kù)的Mybatis框架進(jìn)行增加。

他的三大優(yōu)勢(shì):

1、輕量

除了 MyBatis,沒(méi)有任何第三方依賴(lài)輕依賴(lài)、沒(méi)有任何攔截器,其原理是通過(guò) SqlProvider 的方式實(shí)現(xiàn)的輕實(shí)現(xiàn)。同時(shí),在執(zhí)行的過(guò)程中,沒(méi)有任何的 Sql 解析(Parse)輕運(yùn)行。

這帶來(lái)了幾個(gè)好處:

  • 1、極高的性能;
  • 2、極易對(duì)代碼進(jìn)行跟蹤和調(diào)試;
  • 3、更高的把控性。

2、靈活

支持 Entity 的增刪改查、以及分頁(yè)查詢的同時(shí),MyBatis-Flex 提供了 Db + Row^靈活 工具,可以無(wú)需實(shí)體類(lèi)對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查以及分頁(yè)查詢。 與此同時(shí),MyBatis-Flex 內(nèi)置的 QueryWrapper^靈活 可以輕易的幫助我們實(shí)現(xiàn) 多表查詢、鏈接查詢、子查詢 等等常見(jiàn)的 SQL 場(chǎng)景。

3、強(qiáng)大

支持任意關(guān)系型數(shù)據(jù)庫(kù),還可以通過(guò)方言持續(xù)擴(kuò)展,同時(shí)支持 多(復(fù)合)主鍵、邏輯刪除、樂(lè)觀鎖配置、數(shù)據(jù)脫敏、數(shù)據(jù)審計(jì)、 數(shù)據(jù)填充 等等功能。

2、 mybatis-flex代碼生成器

在 mybatis-flex 中,有了一個(gè)名稱(chēng)為 mybatis-flex-codegen 的模塊,提供了可以通過(guò)數(shù)據(jù)庫(kù)表,生成代碼的功能。

當(dāng)我們把數(shù)據(jù)庫(kù)表設(shè)計(jì)完成后, 就可以使用其快速生成 Entity、 Mapper、 Service、 Controller 等產(chǎn)物。

除此之外,我們還可以通過(guò)擴(kuò)展生成更多的產(chǎn)物,文檔參考 #添加其他產(chǎn)物的生成。

2.1、引入依賴(lài)

注意使用的是Springboot3的

<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring-boot3-starter</artifactId>
    <version>1.11.0</version>
</dependency>

還需要引入相關(guān)依賴(lài)

<!-- 代碼生成模塊 -->
<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-codegen</artifactId>
    <version>1.11.0</version>
</dependency>
<!-- 數(shù)據(jù)庫(kù)連接池 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>

2.2、開(kāi)發(fā)生成器

在根包下新建 generator 包,新建 MyBatisCodeGenerator 類(lèi),編寫(xiě)代碼生成器。先從官方復(fù)制示例代碼,然后按需修改即可。

public class MyBatisCodeGenerator {

    // 需要生成的表名
    private static final String[] TABLE_NAMES = {"user"};

    public static void main(String[] args) {
        // 獲取數(shù)據(jù)源信息
        Dict dict = YamlUtil.loadByPath("application.yml");
        Map<String, Object> dataSourceConfig = dict.getByPath("spring.datasource");
        String url = String.valueOf(dataSourceConfig.get("url"));
        String username = String.valueOf(dataSourceConfig.get("username"));
        String password = String.valueOf(dataSourceConfig.get("password"));
        // 配置數(shù)據(jù)源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);

        // 創(chuàng)建配置內(nèi)容
        GlobalConfig globalConfig = createGlobalConfig();

        // 通過(guò) datasource 和 globalConfig 創(chuàng)建代碼生成器
        Generator generator = new Generator(dataSource, globalConfig);

        // 生成代碼
        generator.generate();
    }

    // 詳細(xì)配置見(jiàn):https://mybatis-flex.com/zh/others/codegen.html
    public static GlobalConfig createGlobalConfig() {
        // 創(chuàng)建配置內(nèi)容
        GlobalConfig globalConfig = new GlobalConfig();

        // 設(shè)置根包,建議先生成到一個(gè)臨時(shí)目錄下,生成代碼后,再移動(dòng)到項(xiàng)目目錄下
        globalConfig.getPackageConfig()
                .setBasePackage("com.yupi.yuaicodemother.genresult");

        // 設(shè)置表前綴和只生成哪些表,setGenerateTable 未配置時(shí),生成所有表
        globalConfig.getStrategyConfig()
                .setGenerateTable(TABLE_NAMES)
                // 設(shè)置邏輯刪除的默認(rèn)字段名稱(chēng)
                .setLogicDeleteColumn("isDelete");

        // 設(shè)置生成 entity 并啟用 Lombok
        globalConfig.enableEntity()
                .setWithLombok(true)
                .setJdkVersion(21);

        // 設(shè)置生成 mapper
        globalConfig.enableMapper();
        globalConfig.enableMapperXml();

        // 設(shè)置生成 service
        globalConfig.enableService();
        globalConfig.enableServiceImpl();

        // 設(shè)置生成 controller
        globalConfig.enableController();

        // 設(shè)置生成時(shí)間和字符串為空,避免多余的代碼改動(dòng)
        globalConfig.getJavadocConfig()
                .setAuthor("<a href=\"https://github.com/liyupi\">程序員魚(yú)皮</a>")
                .setSince("");
        return globalConfig;
    }
}

上述代碼中,我們從配置文件中獲取數(shù)據(jù)庫(kù)連接信息,用來(lái)初始化數(shù)據(jù)源。然后自定義了一些生成配置,包括:

  • 指定邏輯刪除字段中
  • 使用的 JDK 版本
  • 生成的代碼放到哪個(gè)包(建議選擇一個(gè)獨(dú)立的包,不要跟老代碼混一起)
  • 要生成哪些文件
  • 生成什么代碼注釋

2.3、執(zhí)行代碼生成器

查看結(jié)果

擴(kuò)展思路-自定義代碼生成:

可以參考 官方文檔,通過(guò)自定義模板的方式更靈活地控制代碼生成的內(nèi)容,比如設(shè)置主鍵自增策略、增加 Controller 層生成的接口等等。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Security OAuth2認(rèn)證授權(quán)示例詳解

    Spring Security OAuth2認(rèn)證授權(quán)示例詳解

    這篇文章主要介紹了Spring Security OAuth2認(rèn)證授權(quán)示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 淺談javap命令拆解字節(jié)碼文件

    淺談javap命令拆解字節(jié)碼文件

    這篇文章主要介紹了拆解字節(jié)碼文件javap命令,對(duì)反編譯感興趣的同學(xué)可以參考下
    2021-04-04
  • Java8函數(shù)式接口Predicate用法示例詳解

    Java8函數(shù)式接口Predicate用法示例詳解

    這篇文章主要為大家介紹了Java8函數(shù)式接口Predicate用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • SpringCloud Eureka服務(wù)的基本配置和操作方法

    SpringCloud Eureka服務(wù)的基本配置和操作方法

    Eureka是Netflix開(kāi)源的一個(gè)基于REST的服務(wù)治理框架,主要用于實(shí)現(xiàn)微服務(wù)架構(gòu)中的服務(wù)注冊(cè)與發(fā)現(xiàn),Eureka是Netflix開(kāi)源的服務(wù)發(fā)現(xiàn)框架,用于在分布式系統(tǒng)中實(shí)現(xiàn)服務(wù)的自動(dòng)注冊(cè)與發(fā)現(xiàn),本文介紹SpringCloud Eureka服務(wù)的基本配置和操作方法,感興趣的朋友一起看看吧
    2023-12-12
  • SpringMVC的處理器攔截器HandlerInterceptor詳解

    SpringMVC的處理器攔截器HandlerInterceptor詳解

    這篇文章主要介紹了SpringMVC的處理器攔截器HandlerInterceptor詳解,SpringWebMVC的處理器攔截器,類(lèi)似于Servlet開(kāi)發(fā)中的過(guò)濾器Filter,用于處理器進(jìn)行預(yù)處理和后處理,需要的朋友可以參考下
    2024-01-01
  • Spring Cloud Gateway內(nèi)置的斷言和過(guò)濾器作用說(shuō)明

    Spring Cloud Gateway內(nèi)置的斷言和過(guò)濾器作用說(shuō)明

    這篇文章主要介紹了Spring Cloud Gateway內(nèi)置的斷言和過(guò)濾器作用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java中List集合去重常見(jiàn)的幾種方法總結(jié)

    java中List集合去重常見(jiàn)的幾種方法總結(jié)

    在Java編程中List集合是一種常用的數(shù)據(jù)結(jié)構(gòu),它允許我們存儲(chǔ)和操作一組有序的對(duì)象,這篇文章主要給大家介紹了關(guān)于java中List集合去重常見(jiàn)的幾種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • Spring工程中集成多個(gè)redis數(shù)據(jù)源的思路詳解

    Spring工程中集成多個(gè)redis數(shù)據(jù)源的思路詳解

    Spring項(xiàng)目集成雙Redis數(shù)據(jù)源需配置兩個(gè)連接工廠與RedisTemplate,通過(guò)@Primary指定默認(rèn)Bean,@Qualifier注入特定Bean,支持集群環(huán)境,本文給大家介紹Spring工程中集成多個(gè)redis數(shù)據(jù)源的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-07-07
  • 深入理解LinkedHashSet集合的底層機(jī)制

    深入理解LinkedHashSet集合的底層機(jī)制

    這篇文章主要介紹了LinkedHashSet的底層機(jī)制詳解,LinkedHashSet根據(jù)元素的hashCode值來(lái)決定元素的存儲(chǔ)位置,同時(shí)使用鏈表維護(hù)元素的次序,?這使得元素看起來(lái)是以插入順序保存的,需要的朋友可以參考下
    2023-10-10
  • 關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

    關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

    這篇文章主要介紹了關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

永嘉县| 平和县| 保德县| 武义县| 正镶白旗| 宽甸| 临城县| 开江县| 响水县| 类乌齐县| 沅陵县| 定结县| 顺昌县| 榕江县| 都昌县| 信宜市| 孟村| 宣化县| 兴化市| 分宜县| 偃师市| 千阳县| 太谷县| 垦利县| 兰溪市| 睢宁县| 海城市| 永和县| 南开区| 巨鹿县| 姚安县| 工布江达县| 江华| 伊宁市| 盐津县| 尖扎县| 尼木县| 雷波县| 上犹县| 江城| 南溪县|