1、官网:
https://gitee.com/free
2、文档:
https://gitee.com/free/Mapper/wikis/Home
3、快速入门:
1、添加最新包:
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>最新版本</version>
</dependency>
2、修改spring配置文件:
<!-- 整合通用Mapper 所需要做的配置修改: -->
<!-- 原始全类名:org.mybatis.spring.mapper.MapperScannerConfigurer -->
<!-- 通用Mapper 使用:tk.mybatis.spring.mapper.MapperScannerConfigurer -->
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.atguigu.mapper.mappers"/>
</bean>
3、继承通用mapper:
4、常用注解:
4.1 @Table
作用:建立实体类和数据库表之间的对应关系。
默认规则:实体类类名首字母小写作为表名。Employee 类→employee 表。
用法:在@Table 注解的name 属性中指定目标数据库表的表名
4.2 @Column
作用:建立实体类字段和数据库表字段之间的对应关系。
默认规则:
实体类字段:驼峰式命名
数据库表字段:使用“_”区分各个单词
用法:在@Column 注解的name 属性中指定目标字段的字段名
4.3 @Id (没有使用@Id标记时,在使用ID为条件,会将实体所有字段作为联合主键使用)
作用:使用@Id 主键明确标记和数据库表中主键字段对应的实体类字段。
4.4
@Transient
作用:使用
@Transient
注解来告诉通用 Mapper 这不是表中的字段。
4.5 @GeneratedValue(
@KeySql
注解用于替换
@GeneratedValue
)
作用:通过@GeneratedValue返回主键;
自增主键用法:
@KeySql(useGeneratedKeys = true)
private Long id;
@GeneratedValue(generator = "JDBC")
private Long id;
或者
@KeySql(dialect = IdentityDialect.MYSQL)
private Integer id;
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
Oracle 中通过序列获取主键:
@Id
@KeySql(sql = "select SEQ_ID.nextval from dual", order = ORDER.BEFORE)
private Integer id;
或:
@Id
@GeneratedValue(
strategy = GenerationType.IDENTITY,
generator = "select SEQ_ID.nextval from dual")
private Integer id;
5、方法介绍:
5.1 selectOne 方法
5.1.1:实体类封装查询条件生成WHERE 子句的规则:
使用非空的值生成WHERE 子句
在条件表达式中使用“=”进行比较
5.1.2: 要求必须返回一个实体类结果,如果有多个,则会抛出异常
5.2 xxxByPrimaryKey 方
需要使用@Id 主键明确标记和数据库表主键字段对应的实体类字段,否则通用Mapper 会将所有实体类字段作为联合主键。
5.3xxxSelective 方法
非主键字段如果为null 值,则不加入到SQL 语句中。
5.4分页:
6、二级缓存:
注:开启二级缓存时,实体类必须序列化;
6.1
6.2
7、类型处理器:TypeHandler
简单类型:只有一个值的类型
复杂类型:有多个值的类型
项目源代码:https://github.com/ClevelandCavaliers2016/extendedUniversalMapper.git
注:通用Mapper 默认情况下会忽略复杂类型,不做表到实体的映射;
7.1、自定义类型转换器
方法一:
1)自定义TypeHandler:
2)指定TypeHandler:
方法二:设置全局级别,在Mybatis 的配置文件中配置TypeHandler:
1)添加配置:
2)添加 @Column
7.2、枚举类型
方法一:让通用Mapper 把枚举类型作为简单类型处理
方法二::为枚举类型配置对应的类型处理器
1)添加配置:
2)添加 @Column