最近發(fā)現(xiàn)之前使用的MyBatis插件很久都沒更新了,就想換個(gè)其他插件來用用。偶然發(fā)現(xiàn)MyBatis-Plus團(tuán)隊(duì)也開發(fā)了一款插件MyBatisX,體驗(yàn)了一把確實(shí)非常好用,提示很全,而且還能通過GUI生成代碼,推薦給大家!MybatisX簡介
MybatisX是一款基于IDEA的快速開發(fā)插件,由MyBatis-Plus團(tuán)隊(duì)開發(fā)維護(hù),為效率而生。
它的主要功能如下:
- 支持mApper.xml和Mapper接口之間方法的互相導(dǎo)航跳轉(zhuǎn);
- 內(nèi)置代碼生成器,通過使用GUI的形式,能根據(jù)數(shù)據(jù)庫來生成Domain、mapper.xml、Mapper、Service和Service實(shí)現(xiàn)類代碼;
- 可以自定義代碼生成器模板;
- 可以通過類似JPA的方式,直接根據(jù)方法名稱在mapper.xml中生成查詢實(shí)現(xiàn),同時(shí)支持提示。
接下來介紹下MybatisX的使用,這里以我的腳手架項(xiàng)目mall-tiny為例。安裝
在使用前我們需要在插件市場中搜索并安裝MyBatisX插件。
安裝完成后我們會(huì)發(fā)現(xiàn)所有的Mapper接口和mapper.xml文件都變成了MyBatis的小鳥圖標(biāo)。
XML與接口互跳
我們點(diǎn)擊Mapper接口方法左側(cè)的圖標(biāo)可以直接跳轉(zhuǎn)到mapper.xml對(duì)應(yīng)的SQL實(shí)現(xiàn),在mapper.xml點(diǎn)擊左側(cè)圖標(biāo)也可以直接跳轉(zhuǎn)到Mapper接口中對(duì)應(yīng)的方法。
自動(dòng)生成代碼
還記得之前在mall-tiny項(xiàng)目中我們手寫的代碼生成器么,MyBatisX直接整了個(gè)帶圖形化界面的,下面我們來體驗(yàn)下。
- 選中表以后右鍵可以直接生成對(duì)應(yīng)表的CRUD代碼,當(dāng)然你也可以多選,支持一次性生成多表;
- 生成的時(shí)候可以通過GUI來修改選項(xiàng),比如修改基礎(chǔ)包路徑、實(shí)體類包路徑等;
- 生成時(shí)選擇注解和模板類型為Mybatis-Plus 3,有需要的話可以勾選Lombok選項(xiàng)以及修改mapper.xml的文件路徑;
- 點(diǎn)擊確認(rèn)后將生成如下文件,還記得之前在mall-tiny項(xiàng)目中用代碼寫的代碼生成器么,有了GUI就用不著手寫了!
自定義生成模板
如果你覺得默認(rèn)的代碼生成器模板不符合你的要求,還可以試試自定義模板。
- 我們一般會(huì)在實(shí)體類中加入Swagger的注解,方便API文檔的生成,MyBatisX默認(rèn)生成的實(shí)體類是不帶Swagger注解的;
- MyBatisX也提供了生成帶Swagger注解的實(shí)體類模板,但是有點(diǎn)復(fù)雜不太符合我的要求,我們可以修改下生成模板,生成模板都在extensions->MyBaitsX目錄下;
- 這里我們修改下domain.ftl文件即可,最終文件內(nèi)容如下;
package ${domain.packageName}; import JAVA.io.Serializable; <#list tableClass.importList as fieldType>${"n"}import ${fieldType}; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.EqualsAndHashCode; import com.baomidou.mybatisplus.annotation.TableName; /** * ${tableClass.remark!} */ @Data @EqualsAndHashCode(callSuper = false) @TableName("${tableClass.tableName}") @ApiModel(value="${tableClass.shortClassName}對(duì)象", description="${tableClass.remark!}") public class ${tableClass.shortClassName} implements Serializable { private static final long serialVersionUID=1L; <#list tableClass.allFields as field> @ApiModelProperty("${field.remark!}") private ${field.shortTypeName} ${field.fieldName}; }
- 然后再運(yùn)行代碼生成器,選擇只生成帶Swagger注解的實(shí)體類;
- 生成完成后實(shí)體類就會(huì)帶上Swagger注解了,是不是很方便!
JPA提示
MyBatisX還有個(gè)強(qiáng)大的功能,可以根據(jù)JPA風(fēng)格的方法名直接生成SQL實(shí)現(xiàn),無需手寫SQL。
- 例如我們想寫個(gè)批量插入數(shù)據(jù)方法,就可以這樣來操作;
- 例如我們想寫個(gè)根據(jù)名稱查詢品牌的方法,MyBatisX會(huì)像JPA一樣自動(dòng)提示字段,并且能自動(dòng)生成SQL實(shí)現(xiàn);
- 例如我們想寫個(gè)根據(jù)ID修改品牌名稱的方法;
- 例如我們想寫個(gè)根據(jù)名稱刪除品牌的方法,MyBatisX的JPA提示還是非常全面的!
圖標(biāo)設(shè)置
如果你不想Mapper接口和mapper.xml文件都變成小鳥圖標(biāo)的話,可以做在MyBatisX的設(shè)置中進(jìn)行修改。
總結(jié)
MyBatisX確實(shí)是一款非常好用的IDEA插件,不僅提示全面,而且自帶了圖形化的代碼生成器,能極大地提高我們的開發(fā)效率。MyBatisX中的JPA提示功能也非常不錯(cuò),只要你的方法命名符合JPA規(guī)范,就能自動(dòng)生成SQL實(shí)現(xiàn),確實(shí)是個(gè)好功能。
參考資料
官方文檔:https://baomidou.com/pages/ba5b24/
來源:https://mp.weixin.qq.com/s/IkSwjT01H1mLtHK0xb14wA