Mybatis實踐(一)型別轉換器
Mybatis 型別對映?
Mybatis 作為一個 ORM 框架,其中最重要的是能夠將資料表對映到類,即操作類就相當於操作表。那麼 Mybatis 是如何將類與資料表對應起來的?
- 類名 <-> 表名
- 類屬性名 <-> 表欄位名
- 類屬性型別 <-> 表欄位型別
前兩點名字的對應比較好理解和配置使用。這篇文章主要講的是第三點的實踐:型別的對映關係設定。
Mybatis 支援的常用的基本型別轉換
javaType | 資料庫型別 | jdbcType |
---|---|---|
java.lang.String | varchar, char, text, … | VARCHAR, CHAR, LONGVARCHAR |
java.lang.Long | bigint | BIGINT |
java.math.BigDecimal | numeric, decimal | NUMERIC, DECIMAL |
java.lang.Boolean | boolean, bit | BOOLEAN, BIT |
java.lang.Short | short | SHORT |
java.lang.Integer | int | INTEGER |
java.lang.Float | float, real | REAL |
java.lang.Double | double | DOUBLE |
java.lang.Byte | byte | BYTE |
java.lang.Byte[] | binary, varbinary, longvarbinary | BINARY, VARBINARY, LONGVARBINARY |
java.sql.Date | date | DATE |
java.sql.Time | time | TIME |
java.sql.Timestamp | timestamp | TIMESTAMP |
未列出的部分可參考類 org.apache.ibatis.type.JdbcType。
其他型別需要自定義型別轉換器配置實現對映關係。
自定義型別轉換器
首先需要建立類 XXXHandler,實現 TypeHandler<你需要轉換的類> 介面的幾個方法。
之後,需要告訴 Mybatis 自定義的對映關係,以下以一個列舉類以例:
全域性配置法:
<configuration>
<typeHandlers>
<typeHandler handler="com.github.leannor.mybatis.handler.AccessHandler"
jdbcType="TINYINT" javaType="com.github.leannor.mos.enums.AccessEnum"/>
</typeHandlers>
</configuration>
public class AccessEnumHandler implements TypeHandler<AccessEnum> { ... }
全域性註釋法:
<configuration>
<typeHandlers>
<typeHandler handler="com.github.leannor.mybatis.handler.AccessHandler"/>
</typeHandlers>
</configuration>
@MappedJdbcTypes({JdbcType.TINYINT})
@MappedTypes(AccessEnum.class)
public class AccessEnumHandler implements TypeHandler<AccessEnum> { ... }
區域性配置法(未完待更)
相關文章
- Mybatis使用小技巧-自定義型別轉換器MyBatis型別
- MyBatis使用自定義TypeHandler轉換型別MyBatis型別
- WPF 型別轉換器的實現型別
- struts 型別轉換器型別
- myBatis原始碼解析-型別轉換篇(5)MyBatis原始碼型別
- PHP 型別轉換&&型別強制轉換PHP型別
- java型別轉換與強制型別轉換(轉)Java型別
- 型別轉換型別
- 2.3、mybatis原始碼分析-基礎模組之型別轉換MyBatis原始碼型別
- java- 型別-轉換:基本型別以及包裝型別的轉換Java型別
- 資料型別,型別轉換資料型別
- 【型別轉換】使用c#實現簡易的型別轉換(Emit,Expression,反射)型別C#MITExpress反射
- 如何實現隱式型別轉換型別
- js型別轉換JS型別
- 字元型別轉換字元型別
- 3.2 型別轉換型別
- JavaScript 型別轉換JavaScript型別
- Golang型別轉換Golang型別
- 型別轉換(cast)型別AST
- JS 型別轉換,小嚐一口JS型別
- 附一張js的型別轉換JS型別
- C++中的向上型別轉換和向下型別轉換C++型別
- 一個簡單函式—Number型別轉換Date型別函式型別
- MyBatis(九):MyBatis型別處理器(TypeHandler)詳解MyBatis型別
- 函式匹配和實參型別轉換函式型別
- Java資料型別及型別轉換Java資料型別
- 字元型別轉換成時間型別字元型別
- Oracle Long型別轉換為Clob型別Oracle型別
- JS直譯器之自動型別轉換:[]==![]JS型別
- 把一個任意型別的值轉換為布林型別型別
- interface{} 型別的轉換型別
- JNI常用型別轉換型別
- 資料型別轉換資料型別
- go interface{}型別轉換Go型別
- 型別轉換注意點型別
- 強制型別轉換型別
- 變數型別轉換變數型別
- spark dataframe 型別轉換Spark型別