天天看點

Mybatis——通用mapper(1)

 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:

Mybatis——通用mapper(1)

4、常用注解:

4.1    @Table

作用:建立實體類和資料庫表之間的對應關系。

預設規則:實體類類名首字母小寫作為表名。Employee 類→employee 表。

用法:在@Table 注解的name 屬性中指定目标資料庫表的表名

Mybatis——通用mapper(1)

4.2  @Column

作用:建立實體類字段和資料庫表字段之間的對應關系。

預設規則:

       實體類字段:駝峰式命名

        資料庫表字段:使用“_”區分各個單詞

用法:在@Column 注解的name 屬性中指定目标字段的字段名

Mybatis——通用mapper(1)

4.3 @Id (沒有使用@Id标記時,在使用ID為條件,會将實體所有字段作為聯合主鍵使用)

作用:使用@Id 主鍵明确标記和資料庫表中主鍵字段對應的實體類字段。

Mybatis——通用mapper(1)

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 語句中。

Mybatis——通用mapper(1)

5.4分頁:

Mybatis——通用mapper(1)
Mybatis——通用mapper(1)

6、二級緩存:

注:開啟二級緩存時,實體類必須序列化;

6.1

Mybatis——通用mapper(1)

6.2

Mybatis——通用mapper(1)

7、類型處理器:TypeHandler

簡單類型:隻有一個值的類型

複雜類型:有多個值的類型

項目源代碼:https://github.com/ClevelandCavaliers2016/extendedUniversalMapper.git

注:通用Mapper 預設情況下會忽略複雜類型,不做表到實體的映射;

7.1、自定義類型轉換器

方法一:

Mybatis——通用mapper(1)

1)自定義TypeHandler:

Mybatis——通用mapper(1)

2)指定TypeHandler:

Mybatis——通用mapper(1)

方法二:設定全局級别,在Mybatis 的配置檔案中配置TypeHandler:

1)添加配置:

Mybatis——通用mapper(1)

2)添加 @Column

Mybatis——通用mapper(1)

7.2、枚舉類型

方法一:讓通用Mapper 把枚舉類型作為簡單類型處理

方法二::為枚舉類型配置對應的類型處理器

1)添加配置:

Mybatis——通用mapper(1)

2)添加 @Column

Mybatis——通用mapper(1)

繼續閱讀