团队使用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