摘要:通過(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 Mapper和XML 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 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`)提供了一種類(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 Mapper、Mapper XML
其他功能
代碼補(bǔ)全(AutoCoding Mode)。按AutoCoding鍵一次會(huì)生成Java Bean的所有Setter方法。按AutoCoding鍵兩次則會(huì)為Setter方法生成默認(rèn)值。對(duì)于字段很多的POJO,可以防止批量的Set操作漏掉某些字段。
3. Mybatis Plugin
代碼生成流程
配置數(shù)據(jù)庫(kù)
配置樣板代碼生成路徑
生成樣板代碼(POJO、DAO Mapper、Mapper 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.xml和mybatis-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ù)
配置樣板代碼生成路徑
生成樣板代碼(POJO、DAO Mapper、Mapper XML)
foilvora:通過(guò)建表sql生成樣板代碼Reference
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
Spring Data Jpa - Query creation
MyBatisCodeHelper-Pro
Free Mybatis plugin
MybatisGenerator
AutoCurd
Free Mybatis plugin
CodeHelper Generator
Mybatis Plugin - Document
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70325.html
摘要:效率專精系列善用統(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ì)...
摘要:其標(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)狀...
摘要:目前團(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è)步驟。...
摘要:而熱部署技術(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ā)效率的...
閱讀 2320·2021-09-26 10:21
閱讀 2796·2021-09-08 09:36
閱讀 3069·2019-08-30 15:56
閱讀 958·2019-08-30 12:57
閱讀 924·2019-08-26 10:39
閱讀 3559·2019-08-23 18:11
閱讀 3083·2019-08-23 17:12
閱讀 1086·2019-08-23 12:18