摘要:通過插件更優(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 Mapper和XML 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") ListuserPOs); 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ù)庫
配置樣板代碼生成路徑
生成樣板代碼(POJO、DAO Mapper、Mapper XML)
其他功能
Xml Statement和對應(yīng)方法導(dǎo)航,ResultMap和對應(yīng)POJO導(dǎo)航
DAO Mapper、Xml代碼提示和補(bǔ)全
代碼檢查及XML語法錯誤提示
集成了Mybatis Generater,可生成mybatis-config.xml和mybatis-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生成樣板代碼Reference
Mybatis Maven Plugin:在mybatis-generater-config.xml配置數(shù)據(jù)庫連接,生成對應(yīng)的Mapper Xml、Mapper類、POJO,可配置性最強(qiáng)
Swords配置圖1
MybatisGenerator配置圖2
Spring Data Jpa - Query creation
MyBatisCodeHelper-Pro
Free Mybatis plugin
MybatisGenerator
AutoCurd
Free Mybatis plugin
CodeHelper Generator
Mybatis Plugin - Document
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70325.html
摘要:效率專精系列善用統(tǒng)一描述語言提升開發(fā)效率分鐘搞定環(huán)境配置與使用考慮到篇幅較長的文檔反復(fù)修改的情況,要快速找到修改點(diǎn)比較困難。 之前零零散散寫了幾篇文章,主要是實(shí)際開發(fā)過程中一些效率痛點(diǎn)和相應(yīng)的改善方法。今天抽空溫故知新,把之前的內(nèi)容串起來,做了個小總結(jié),即《效率專精系列》小系列的總集篇。 回顧項目開發(fā)流程 開發(fā)一個新項目時,開發(fā)流程大概分成以下幾步: 設(shè)計方案,并落地成設(shè)計文檔 設(shè)計...
摘要:其標(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)狀...
摘要:目前團(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、部署四個步驟。...
摘要:而熱部署技術(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ā)效率的...
閱讀 2335·2021-09-26 10:21
閱讀 2807·2021-09-08 09:36
閱讀 3074·2019-08-30 15:56
閱讀 967·2019-08-30 12:57
閱讀 946·2019-08-26 10:39
閱讀 3568·2019-08-23 18:11
閱讀 3088·2019-08-23 17:12
閱讀 1094·2019-08-23 12:18