国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Kylin_Mountain / 1093人閱讀

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

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

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

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

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

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

Mybatis分頁(yè)插件:Mybatis PageHelper

實(shí)現(xiàn)原理基于Mybatis的QueryInterceptor機(jī)制,能動(dòng)態(tài)攔截sql語(yǔ)句并根據(jù)對(duì)應(yīng)的數(shù)據(jù)庫(kù)類(lèi)型加上分頁(yè)語(yǔ)句。無(wú)需修改底層的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ù)庫(kù)連接、根據(jù)POJO、根據(jù)建表sql,用戶根據(jù)實(shí)際情況選擇。

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

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

1. MyBatisCodeHelper

代碼生成流程

在IDE中開(kāi)發(fā)持久化對(duì)象(POJO

在可視化界面配置表名、主鍵、類(lèi)型、索引、默認(rèn)值、注釋等,自動(dòng)生成建表SQL語(yǔ)句、DAO MapperMapper 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`)提供了一種類(lèi)SQL的**聲明式的開(kāi)發(fā)方法**,能根據(jù)符合特定規(guī)則的接口方法名在運(yùn)行時(shí)自動(dòng)生成字節(jié)碼。該插件提供了類(lèi)似的功能,根據(jù)接口的方法名推斷含義,然后在`Mapper XML`中直接生成對(duì)應(yīng)的SQL。比如`findByStartDateBetween`方法會(huì)被翻譯成這樣的SQL`… where x.startDate between ?1 and ?2`。
> 具體的推斷規(guī)則可以參考`Spring Data Jpa`文檔,也可以見(jiàn)腳注:方法名推斷之約束條件[^方法名推斷之約束條件],方法名推斷之比較符[^方法名推斷之比較符]。
2. Codehelper.generater

代碼生成流程

在IDE中開(kāi)發(fā)持久化對(duì)象(POJO

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

其他功能

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

3. Mybatis Plugin

代碼生成流程

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

配置樣板代碼生成路徑

生成樣板代碼(POJODAO MapperMapper XML

其他功能

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

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

代碼檢查及XML語(yǔ)法錯(cuò)誤提示

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

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

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

代碼生成流程

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

配置樣板代碼生成路徑

生成樣板代碼(POJODAO MapperMapper XML

foilvora:通過(guò)建表sql生成樣板代碼
Mybatis Maven Plugin:在mybatis-generater-config.xml配置數(shù)據(jù)庫(kù)連接,生成對(duì)應(yīng)的Mapper Xml、Mapper類(lèi)、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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70325.html

    相關(guān)文章

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

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

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

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

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

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

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

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

      dongfangyiyu 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    最新活動(dòng)
    閱讀需要支付1元查看
    <