成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【效率專精系列】善用插件提升MyBatis開發(fā)效率

Kylin_Mountain / 1097人閱讀

摘要:通過插件更優(yōu)雅地生成和的樣板代碼通過插件不污染地實(shí)現(xiàn)優(yōu)雅分頁。使用步驟引入依賴,在或的配置中進(jìn)行配置。提供語法提示自動補(bǔ)全錯誤提示導(dǎo)航功能。該插件提供了類似的功能,根據(jù)接口的方法名推斷含義,然后在中直接生成對應(yīng)的。

團(tuán)隊使用Mybatis作為數(shù)據(jù)庫訪問框架。不同于Hibernate這種采用經(jīng)典面向?qū)ο笏枷朐O(shè)計的ORM框架,Mybatis是面向過程的,它只做了過程到SQL語句的映射。兩者的性能在絕大多數(shù)場景下是差不多的,因此理論上可以互相替代使用。由于Mybatis可以直接控制底層SQL,因此對于碼農(nóng)來說,學(xué)習(xí)成本更低、優(yōu)化起來更容易;不過也帶來了首次配置繁瑣、樣板代碼較多等缺點(diǎn)。

比如是對于單表的、簡單的查詢,為了符合JavaWeb網(wǎng)絡(luò)開發(fā)模型的Web、Service、Dao的三層模型,不得不在Dao層、Service接口、Service實(shí)現(xiàn)類中添加功能幾乎重復(fù)的代碼,所做的也不過是透傳,這里就存在可以優(yōu)化的點(diǎn)。

本文的目的是優(yōu)化工具鏈支持,減少手動開發(fā)Mybatis樣板代碼的時間。

通過Intillij Idea插件更優(yōu)雅地生成DAO MapperXML Statement的樣板代碼

通過Mybatis插件不污染XML Statement地實(shí)現(xiàn)優(yōu)雅分頁。

Mybatis分頁插件:Mybatis PageHelper

實(shí)現(xiàn)原理基于Mybatis的QueryInterceptor機(jī)制,能動態(tài)攔截sql語句并根據(jù)對應(yīng)的數(shù)據(jù)庫類型加上分頁語句。無需修改底層的SQL。

使用步驟

引入Maven依賴,在mybatis或spring的配置xml中進(jìn)行配置。

DAO Mapper方法中增加入?yún)?b>@Param("pageNum") int pageNum, @Param("pageSize") int pageSize即可。

> 插件還有多種調(diào)用方法。[Mybatis-PageHelper][Mybatis-PageHelper]
Mybatis代碼生成插件 Fin. 總結(jié)

插件生成樣板代碼的方式大致有三種:根據(jù)數(shù)據(jù)庫連接、根據(jù)POJO、根據(jù)建表sql,用戶根據(jù)實(shí)際情況選擇。

MyBatisCodeHelper提供了聲明式的Statement開發(fā)方法,在編寫自定義Dao方法時可省去部分對應(yīng)SQL的編寫時間。

MyBatisCodeHelper、Mybatis Plugin提供XML語法提示、自動補(bǔ)全、錯誤提示、導(dǎo)航功能。

1. MyBatisCodeHelper

代碼生成流程

在IDE中開發(fā)持久化對象(POJO

在可視化界面配置表名、主鍵、類型、索引、默認(rèn)值、注釋等,自動生成建表SQL語句、DAO Mapper、Mapper XML

> 默認(rèn)生成的DAO中包含了`insert`、`insertSelective`、`insertList`、`update`方法

> `POJO`示例和DAO Mapper示例  
   ```java
    public class UserPO {
        private Integer id;
        private String name;
        private String age;
        private Date addTime;
        private Date updateTime;
        private Boolean isDelete;
        //getter/setter
    }
```

```java
    int insert(@Param("userPO") UserPO userPO);
    int insertSelective(@Param("userPO") UserPO userPO);
    int insertList(@Param("userPOs") List userPOs);
    int update(@Param("userPO") UserPO userPO);
```

> 可視化UI ![clipboard.png](/img/bVUk7g)

其他功能

根據(jù)DAO方法名推斷生成XML Statement的實(shí)現(xiàn)

> `Spring Data Jpa`(基于`Hibernate`)提供了一種類SQL的**聲明式的開發(fā)方法**,能根據(jù)符合特定規(guī)則的接口方法名在運(yùn)行時自動生成字節(jié)碼。該插件提供了類似的功能,根據(jù)接口的方法名推斷含義,然后在`Mapper XML`中直接生成對應(yīng)的SQL。比如`findByStartDateBetween`方法會被翻譯成這樣的SQL`… where x.startDate between ?1 and ?2`。
> 具體的推斷規(guī)則可以參考`Spring Data Jpa`文檔,也可以見腳注:方法名推斷之約束條件[^方法名推斷之約束條件],方法名推斷之比較符[^方法名推斷之比較符]。
2. Codehelper.generater

代碼生成流程

在IDE中開發(fā)持久化對象(POJO

在配置文件中設(shè)置路徑(或者使用默認(rèn)配置),自動生成建表SQL語句、DAO Mapper、Mapper XML

其他功能

代碼補(bǔ)全(AutoCoding Mode)。按AutoCoding鍵一次會生成Java Bean的所有Setter方法。按AutoCoding鍵兩次則會為Setter方法生成默認(rèn)值。對于字段很多的POJO,可以防止批量的Set操作漏掉某些字段。

3. Mybatis Plugin

代碼生成流程

配置數(shù)據(jù)庫

配置樣板代碼生成路徑

生成樣板代碼(POJODAO Mapper、Mapper XML

其他功能

Xml Statement和對應(yīng)方法導(dǎo)航,ResultMap和對應(yīng)POJO導(dǎo)航

DAO Mapper、Xml代碼提示和補(bǔ)全

代碼檢查及XML語法錯誤提示

集成了Mybatis Generater,可生成mybatis-config.xmlmybatis-generater-config.xml模板

根據(jù)Mapper對象(必須以Mapper結(jié)尾)自動生成Mapper Xml、其中的方法生成對應(yīng)的Statement(只包含外層元素)

> 例如:根據(jù)`int countById(@Param("id") Integer id);`就會生成``
4. MybatisGenerator、Swords、AutoCurd、GetCode、foilvora、Mybatis Maven Plugin

代碼生成流程

配置數(shù)據(jù)庫

配置樣板代碼生成路徑

生成樣板代碼(POJO、DAO Mapper、Mapper XML

foilvora:通過建表sql生成樣板代碼
Mybatis Maven Plugin:在mybatis-generater-config.xml配置數(shù)據(jù)庫連接,生成對應(yīng)的Mapper Xml、Mapper類、POJO,可配置性最強(qiáng)
Swords配置圖1
MybatisGenerator配置圖2
Reference

Spring Data Jpa - Query creation

MyBatisCodeHelper-Pro

Free Mybatis plugin

MybatisGenerator

AutoCurd

Free Mybatis plugin

CodeHelper Generator

Mybatis Plugin - Document

  • Swords配置 ?

  • MybatisGenerator配置入口 ?

  • 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70325.html

    相關(guān)文章

    • 效率專精系列】我有一個夢想:提高開發(fā)效率,晚上回家吃雞

      摘要:效率專精系列善用統(tǒng)一描述語言提升開發(fā)效率分鐘搞定環(huán)境配置與使用考慮到篇幅較長的文檔反復(fù)修改的情況,要快速找到修改點(diǎn)比較困難。 之前零零散散寫了幾篇文章,主要是實(shí)際開發(fā)過程中一些效率痛點(diǎn)和相應(yīng)的改善方法。今天抽空溫故知新,把之前的內(nèi)容串起來,做了個小總結(jié),即《效率專精系列》小系列的總集篇。 回顧項目開發(fā)流程 開發(fā)一個新項目時,開發(fā)流程大概分成以下幾步: 設(shè)計方案,并落地成設(shè)計文檔 設(shè)計...

      zhaot 評論0 收藏0
    • 效率專精系列善用API統(tǒng)一描述語言提升RestAPI開發(fā)效率

      摘要:其標(biāo)準(zhǔn)為前身是,提供強(qiáng)大的在線編輯功能,包括語法高亮錯誤提示自動完成實(shí)時預(yù)覽,并且支持用戶以格式撰寫導(dǎo)入導(dǎo)出轉(zhuǎn)換文檔。 團(tuán)隊內(nèi)部RestAPI開發(fā)采用設(shè)計驅(qū)動開發(fā)的模式,即使用API設(shè)計文檔解耦前端和后端的開發(fā)過程,雙方只在聯(lián)調(diào)與測試時耦合。在實(shí)際開發(fā)和與前端合作的過程中,受限于眾多因素的影響,開發(fā)效率還有進(jìn)一步提高的空間。本文的目的是優(yōu)化工具鏈支持,減少一部分重復(fù)和枯燥的勞動。 現(xiàn)狀...

      tianyu 評論0 收藏0
    • 效率專精系列】Beta環(huán)境不需要,本地聯(lián)調(diào)拯救開發(fā)效率

      摘要:目前團(tuán)隊中前后端聯(lián)調(diào)是較之個人單獨(dú)開發(fā)相對耗時的一個環(huán)節(jié),主要體現(xiàn)在環(huán)境下的部署時間較長。本文的目的是通過將聯(lián)調(diào)本地化,減少部分枯燥勞動以及無效的等待時間,提高團(tuán)隊的開發(fā)效率。不需要更改的為外部,保持即可。 目前團(tuán)隊中前后端聯(lián)調(diào)是較之個人單獨(dú)開發(fā)相對耗時的一個環(huán)節(jié),主要體現(xiàn)在: beta環(huán)境下的部署時間較長。首先部署beta需要經(jīng)過push分支、合并沖突、build、部署四個步驟。...

      cc17 評論0 收藏0
    • 效率專精系列】幾種常見的JVM熱部署技術(shù)及實(shí)現(xiàn)難點(diǎn)淺談

      摘要:而熱部署技術(shù)能夠幫助開發(fā)人員減少重新部署的等待時間。本文的目的為調(diào)研熱部署的技術(shù)現(xiàn)狀及其對開發(fā)效率的幫助,并簡單梳理其技術(shù)實(shí)現(xiàn)的難點(diǎn)。熱部署技術(shù)總結(jié)熱部署目前有多種技術(shù)實(shí)現(xiàn)官方開源商業(yè)。 開發(fā)、自測、聯(lián)調(diào)期間代碼可能會被頻繁地修改,通常即使只增加了一行代碼,都需要重啟容器以檢查執(zhí)行效果。而熱部署技術(shù)能夠幫助開發(fā)人員減少重新部署的等待時間。本文的目的為調(diào)研熱部署的技術(shù)現(xiàn)狀及其對開發(fā)效率的...

      dongfangyiyu 評論0 收藏0

    發(fā)表評論

    0條評論

    最新活動
    閱讀需要支付1元查看
    <