團隊使用Mybatis做爲數據庫訪問框架。不一樣於Hibernate這種採用經典面向對象思想設計的ORM框架,Mybatis是面向過程的,它只作了過程到SQL語句的映射。二者的性能在絕大多數場景下是差很少的,所以理論上能夠互相替代使用。因爲Mybatis能夠直接控制底層SQL,所以對於碼農來講,學習成本更低、優化起來更容易;不過也帶來了首次配置繁瑣、樣板代碼較多等缺點。html
好比是對於單表的、簡單的查詢,爲了符合JavaWeb網絡開發模型的Web、Service、Dao的三層模型,不得不在Dao層、Service接口、Service實現類中添加功能幾乎重複的代碼,所作的也不過是透傳,這裏就存在能夠優化的點。
本文的目的是優化工具鏈支持,減小手動開發Mybatis樣板代碼的時間。java
Intillij Idea
插件更優雅地生成DAO Mapper
和XML Statement
的樣板代碼XML Statement
地實現優雅分頁。實現原理基於Mybatis的QueryInterceptor
機制,能動態攔截sql語句並根據對應的數據庫類型加上分頁語句。無需修改底層的SQL。git
使用步驟github
DAO Mapper
方法中增長入參@Param("pageNum") int pageNum, @Param("pageSize") int pageSize
便可。> 插件還有多種調用方法。[Mybatis-PageHelper][Mybatis-PageHelper]
代碼生成流程spring
POJO
)DAO Mapper
、Mapper XML
> 默認生成的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<UserPO> userPOs); int update(@Param("userPO") UserPO userPO); ``` > 可視化UI 
其餘功能sql
XML Statement
的實現> `Spring Data Jpa`(基於`Hibernate`)提供了一種類SQL的**聲明式的開發方法**,能根據符合特定規則的接口方法名在運行時自動生成字節碼。該插件提供了相似的功能,根據接口的方法名推斷含義,而後在`Mapper XML`中直接生成對應的SQL。好比`findByStartDateBetween`方法會被翻譯成這樣的SQL`… where x.startDate between ?1 and ?2`。 > 具體的推斷規則能夠參考`Spring Data Jpa`文檔,也能夠見腳註:方法名推斷之約束條件[^方法名推斷之約束條件],方法名推斷之比較符[^方法名推斷之比較符]。
代碼生成流程數據庫
POJO
)DAO Mapper
、Mapper XML
其餘功能網絡
Setter
方法生成默認值。對於字段不少的POJO
,能夠防止批量的Set操做漏掉某些字段。代碼生成流程mybatis
POJO
、DAO Mapper
、Mapper XML
)其餘功能app
Xml Statement
和對應方法導航,ResultMap
和對應POJO
導航DAO Mapper
、Xml代碼提示和補全Mybatis Generater
,可生成mybatis-config.xml
和mybatis-generater-config.xml
模板Mapper Xml
、其中的方法生成對應的Statement(只包含外層元素)> 例如:根據`int countById(@Param("id") Integer id);`就會生成`<select id="countById" resultType="java.lang.Integer"></select>`
代碼生成流程
POJO
、DAO Mapper
、Mapper XML
)foilvora:經過建表sql生成樣板代碼
Mybatis Maven Plugin:在mybatis-generater-config.xml
配置數據庫鏈接,生成對應的Mapper Xml
、Mapper類、POJO
,可配置性最強
Swords配置圖 1
MybatisGenerator配置圖 2