<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

    超越 Mybatis-Plus?超強 ORM 框架橫空出世!

    共 5009字,需瀏覽 11分鐘

     ·

    2023-08-09 13:46


    1

    MyBatis-Flex 是什么


    MyBatis-Flex 是一個優(yōu)雅的 MyBatis 增強框架,它非常輕量、同時擁有極高的性能與靈活性。我們可以輕松的使用 Mybaits-Flex 鏈接任何數(shù)據(jù)庫,其內(nèi)置的 QueryWrapper^亮點 幫助我們極大的減少了 SQL 編寫的工作的同時,減少出錯的可能性。

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


    2

    特征


    • 輕量:除了 MyBatis,沒有任何第三方依賴輕依賴、沒有任何攔截器,其原理是通過 SqlProvider 的方式實現(xiàn)的輕實現(xiàn)。同時,在執(zhí)行的過程中,沒有任何的 Sql 解析(Parse)輕運行。這帶來了幾個好處:1、極高的性能;2、極易對代碼進行跟蹤和調(diào)試;3、把控性更高。

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

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


    3

    開始使用

    在開始之前,我們假定您已經(jīng):

    • 熟悉 Java 環(huán)境配置及其開發(fā)

    • 熟悉 關(guān)系型 數(shù)據(jù)庫,比如 MySQL

    • 熟悉 Spring Boot 及相關(guān)框架

    • 熟悉 Java 構(gòu)建工具,比如 Maven


    4

    Maven 依賴


    Spring Boot 場景


    <dependency>
        <groupId>com.mybatis-flex</groupId>
        <artifactId>mybatis-flex-spring-boot-starter</artifactId>
        <version>1.5.3</version>
    </dependency>

    <dependency>
        <groupId>com.mybatis-flex</groupId>
        <artifactId>mybatis-flex-processor</artifactId>
        <version>1.5.3</version>
        <scope>provided</scope>
    </dependency>

    5

    同類框架「功能」對比


    MyBatis-Flex 主要是和 MyBatis-Plus 與 Fluent-MyBatis 對比,

    • MyBatis-Plus:老牌的 MyBatis 增強框架,開源于 2016 年。

    • Fluent-MyBatis:阿里云開發(fā)的 MyBatis 增強框架(來自于阿里云·云效產(chǎn)品團隊)



    測試列表(List)數(shù)據(jù)查詢


    要求返回的數(shù)據(jù)為 10 條數(shù)據(jù)。

    MyBatis-Flex 的代碼如下:


    QueryWrapper queryWrapper = new QueryWrapper();
    queryWrapper.where(FLEX_ACCOUNT.ID.ge(100).or(FLEX_ACCOUNT.USER_NAME
    .eq("admin" + ThreadLocalRandom.current().nextInt(10000))))
    .limit(10);
    mapper.selectListByQuery(queryWrapper);


    MyBatis-Plus 的代碼如下:

        
    QueryWrapper queryWrapper = new QueryWrapper();
    queryWrapper.ge("id", 100);
    queryWrapper.or();
    queryWrapper.eq("user_name", "admin" + ThreadLocalRandom.current().nextInt(10000));
    queryWrapper.last("limit 10");
    mapper.selectList(queryWrapper);


    10 輪的測試結(jié)果:

        
    ---------------
    >>>>>>>testFlexSelectTop10:90
    >>>>>>>testPlusSelectTop10WithLambda:743
    >>>>>>>testPlusSelectTop10:678
    ---------------
    >>>>>>>testFlexSelectTop10:85
    >>>>>>>testPlusSelectTop10WithLambda:692
    >>>>>>>testPlusSelectTop10:684
    ---------------
    >>>>>>>testFlexSelectTop10:84
    >>>>>>>testPlusSelectTop10WithLambda:692
    >>>>>>>testPlusSelectTop10:670
    ---------------
    >>>>>>>testFlexSelectTop10:85
    >>>>>>>testPlusSelectTop10WithLambda:737
    >>>>>>>testPlusSelectTop10:667
    ---------------
    >>>>>>>testFlexSelectTop10:85
    >>>>>>>testPlusSelectTop10WithLambda:691
    >>>>>>>testPlusSelectTop10:684
    ---------------
    >>>>>>>testFlexSelectTop10:97
    >>>>>>>testPlusSelectTop10WithLambda:760
    >>>>>>>testPlusSelectTop10:666
    ---------------
    >>>>>>>testFlexSelectTop10:80
    >>>>>>>testPlusSelectTop10WithLambda:673
    >>>>>>>testPlusSelectTop10:637
    ---------------
    >>>>>>>testFlexSelectTop10:81
    >>>>>>>testPlusSelectTop10WithLambda:653
    >>>>>>>testPlusSelectTop10:639
    ---------------
    >>>>>>>testFlexSelectTop10:82
    >>>>>>>testPlusSelectTop10WithLambda:659
    >>>>>>>testPlusSelectTop10:636
    ---------------
    >>>>>>>testFlexSelectTop10:81
    >>>>>>>testPlusSelectTop10WithLambda:654
    >>>>>>>testPlusSelectTop10:656


    測試結(jié)論

    MyBatis-Flex 的查詢 10 條數(shù)據(jù)的速度,大概是 MyBatis-Plus 的 5~10 倍左右。


    6

    支持的數(shù)據(jù)庫類型


    MyBatis-Flex 支持的數(shù)據(jù)庫類型,現(xiàn)在市面上的數(shù)據(jù)庫幾乎全部支持,我們還可以通過自定義方言的方式,持續(xù)添加更多的數(shù)據(jù)庫支持。


    數(shù)據(jù)庫方言

    在某些場景下,比如用戶要實現(xiàn)自己的 SQL 生成邏輯時,我們可以通過實現(xiàn)自己的方言達到這個目的,實現(xiàn)方言分為兩個步驟:

    1、編寫自己的方言類,實現(xiàn) IDialect 接口
    2、通過 DialectFactory.registerDialect() 方法注冊自己的方言

    • Gitee地址https://gitee.com/mybatis-flex/mybatis-flex
    • GitHub地址:https://github.com/mybatis-flex/mybatis-flex
    • 操作文檔https://mybatis-flex.com/zh/intro/support-database.html

    瀏覽 478
    點贊
    評論
    收藏
    分享

    手機掃一掃分享

    分享
    舉報
    評論
    圖片
    表情
    推薦
    點贊
    評論
    收藏
    分享

    手機掃一掃分享

    分享
    舉報

    <kbd id="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    天天色小说| 中学生妹一级特黄毛片 | 免费成人性爱视频 | 在线熟妇| 日一区二区三区四区视频 |