MyBatis可引入第三方插件对相关功能进行扩展,本文只涉及MyBatis整合通用mapper的基本步骤,具体Mybatis分页插件原理及源码分析部分,可参考Mybatis插件原理分析及自定义一个插件
1.引入tk.mybatis依赖
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.1.2</version>
</dependency>
2.在SqlMapConfig.xml文件中插件添加拦截器MapperInterceptor
<!--分页插件:如果有分页插件,要排在通用mapper之前-->
<!-- 通用Mapper接口,多个通用接口用逗号隔开 -->
<plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
3.实体类及属性增加映射@公式
@Table(name = "user") user为当前实体类在数据库中表名,如果表名同实体类一致(不区分大小写)可不配置当前属性`
@Id // 唯一主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//主键生成策略
@Column(name="xxx") //当属性名和数据不一致,可配置此属性
@Transient 数据库表中无对应属性可配置此属性过滤
@Table(name = "user")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String username;
@Column(name="")
private String password;
private String birthday;
@Transient
private List<Order> orderList;
@Transient
private List<Role> roleList;
....set get construct
}
4.mapper接口继承Mapper (此处需配置对应的实体 Mapper<User> 否则插件无法找到对象)
public interface UserMapper extends Mapper<User>{
}
基础配置完成,此时调用UserMapper即可调用通用Mapper方法中封装的单表相关的增删改查操作,无需手写了简单的增删改查; 还可通过new Example()封装复杂查询