MyBatis中的JdbcType映射使用詳解
Java項(xiàng)目涉及到數(shù)據(jù)庫交互,以往常用的是JDBC,現(xiàn)在則有Hibernate、Mybatis等這些持久化支持。
項(xiàng)目中用到了MyBatis,和JDBC最顯著的區(qū)別,就是SQL語句配置化,通過xml文件定義SQL語句,當(dāng)然JDBC也可以將SQL配置化,需要定制開發(fā),MyBatis則直接支持這種方法。
官方對于MyBatis的介紹,
MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.
簡單來講,MyBatis幾乎屏蔽了所有JDBC代碼,用一種簡單的xml,或者注解,就能完成數(shù)據(jù)庫交互。
xml配置文件,可用MyBatis自己定義的數(shù)據(jù)類型,引自:http://www.mybatis.org/mybatis-3/configuration.html
Associated JDBC type can be specified by two means:
Adding a jdbcType attribute to the typeHandler element (for example: jdbcType="VARCHAR").
Adding a @MappedJdbcTypes annotation to your TypeHandler class specifying the list of JDBC types to associate it with. This annotation will be ignored if the jdbcType attribute as also been specified.
例如下面的配置,指定companyid參數(shù)類型為BIGINT,
<select id='getMeetingnoByCompanyid' parameterType="java.lang.Integer"
resultType="java.lang.String">
select a.meetingno
from xxx a
where a.companyid = #{companyid, jdbcType=BIGINT}
</select>
對于jdbcType,MyBatis的API文檔有說明,引自:http://www.mybatis.org/mybatis-3/apidocs/reference/org/apache/ibatis/type/JdbcType.html

另外,以下介紹給出了JdbcType和Oracle以及MySQL,相互之間的映射關(guān)系,比較詳細(xì):
1. Mybatis JdbcType與Oracle、MySql數(shù)據(jù)類型對應(yīng)列表
| JdbcType | Oracle | MySql | |
|---|---|---|---|
| JdbcType | ARRAY | ||
| JdbcType | BIGINT | BIGINT | |
| JdbcType | BINARY | ||
| JdbcType | BIT | BIT | |
| JdbcType | BLOB | BLOB | BLOB |
| JdbcType | BOOLEAN | ||
| JdbcType | CHAR | CHAR | CHAR |
| JdbcType | CLOB | CLOB | 修改為TEXT |
| JdbcType | CURSOR | ||
| JdbcType | DATE | DATE | DATE |
| JdbcType | DECIMAL | DECIMAL | DECIMAL |
| JdbcType | DOUBLE | NUMBER | DOUBLE |
| JdbcType | FLOAT | FLOAT | FLOAT |
| JdbcType | INTEGER | INTEGER | INTEGER |
| JdbcType | LONGVARBINARY | ||
| JdbcType | LONGVARCHAR | LONG VARCHAR | |
| JdbcType | NCHAR | NCHAR | |
| JdbcType | NCLOB | NCLOB | |
| JdbcType | NULL | ||
| JdbcType | NUMERIC | NUMERIC/NUMBER | NUMERIC/ |
| JdbcType | NVARCHAR | ||
| JdbcType | OTHER | ||
| JdbcType | REAL | REAL | REAL |
| JdbcType | SMALLINT | SMALLINT | SMALLINT |
| JdbcType | STRUCT | ||
| JdbcType | TIME | TIME | |
| JdbcType | TIMESTAMP | TIMESTAMP | TIMESTAMP/DATETIME |
| JdbcType | TINYINT | TINYINT | |
| JdbcType | UNDEFINED | ||
| JdbcType | VARBINARY | ||
| JdbcType | VARCHAR | VARCHAR | VARCHAR |
注意到, MyBatis的JdbcType中部分沒有對應(yīng)到Oracle和Mysql的數(shù)據(jù)類型中(或許由于自己遺漏),不過不用擔(dān)心,后續(xù)大家碰到再具體分析;同時(shí)上述對應(yīng)關(guān)系不一定是一一對應(yīng),請大家了解。
大家主要掌握基本的數(shù)字、時(shí)間、字符串就足以應(yīng)對日常開發(fā)了。
2. Mybatis JdbcType官方文檔

查閱Mybatis JdbcType官方文檔是很有必要的!
3. 說明
對于自己不肯定的,調(diào)整代碼多嘗試下,能夠使自己加深印象!
4. 更新日志
2017-04-26 修改內(nèi)容:MySQL中沒有CLOB類型,謝謝@火靈 指正。
| Mybatis | JdbcType | Oracle | MySql |
|---|---|---|---|
| JdbcType | CLOB | CLOB | CLOB–>修改為TEXT |
以上這篇MyBatis中的JdbcType映射使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
介紹Java的大數(shù)類(BigDecimal)和八種舍入模式
在實(shí)際應(yīng)用中,需要對更大或者更小的數(shù)進(jìn)行運(yùn)算和處理。Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算。本文將介紹Java中的大數(shù)類BigDecimal及其八種舍入模式,有需要的可以參考借鑒。2016-08-08
MyBatis-Plus主鍵生成策略的實(shí)現(xiàn)方法
MyBatis-Plus提供了多種主鍵生成策略,包括自增、UUID、Redis和雪花算法,本文就來介紹一下,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
@TransactionalEventListener的使用和實(shí)現(xiàn)原理分析
這篇文章主要介紹了@TransactionalEventListener的使用和實(shí)現(xiàn)原理分析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
java實(shí)現(xiàn)字符串四則運(yùn)算公式解析工具類的方法
今天小編就為大家分享一篇java實(shí)現(xiàn)字符串四則運(yùn)算公式解析工具類的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
springboot如何接收get和post請求參數(shù)
這篇文章主要介紹了springboot如何接收get和post請求參數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
詳解Java如何通過Socket實(shí)現(xiàn)查詢IP
在本文中,我們來學(xué)習(xí)下如何找到連接到服務(wù)器的客戶端計(jì)算機(jī)的IP地址。我們將創(chuàng)建一個(gè)簡單的客戶端-服務(wù)器場景,讓我們探索用于TCP/IP通信的java.net?API,感興趣的可以了解一下2022-10-10
使用java實(shí)現(xiàn)http多線程斷點(diǎn)下載文件(二)
下載工具我想沒有幾個(gè)人不會用的吧,前段時(shí)間比較無聊,花了點(diǎn)時(shí)間用java寫了個(gè)簡單的http多線程下載程序,我實(shí)現(xiàn)的這個(gè)http下載工具功能很簡單,就是一個(gè)多線程以及一個(gè)斷點(diǎn)恢復(fù),當(dāng)然下載是必不可少的,需要的朋友可以參考下2012-12-12
SpringBoot使用easy-captcha 實(shí)現(xiàn)驗(yàn)證碼登錄功能(解決思路)
文章介紹了如何使用Spring Boot和Easy-Captcha實(shí)現(xiàn)驗(yàn)證碼登錄功能,后端通過Easy-Captcha生成驗(yàn)證碼并存儲在Redis中,前端獲取驗(yàn)證碼并顯示給用戶,登錄時(shí),前端將用戶輸入的驗(yàn)證碼和標(biāo)識符發(fā)送到后端進(jìn)行驗(yàn)證,感興趣的朋友跟隨小編一起看看吧2025-02-02

