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