MyBatis JdbcType 與Oracle、MySql數(shù)據(jù)類型對(duì)應(yīng)關(guān)系說明
1. Mybatis JdbcType與Oracle、MySql數(shù)據(jù)類型對(duì)應(yīng)列表
| Mybatis | 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 | 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中部分沒有對(duì)應(yīng)到Oracle和Mysql的數(shù)據(jù)類型中(或許由于自己遺漏),不過不用擔(dān)心,后續(xù)大家碰到再具體分析;同時(shí)上述對(duì)應(yīng)關(guān)系不一定是一一對(duì)應(yīng),請(qǐng)大家了解。
大家主要掌握基本的數(shù)字、時(shí)間、字符串就足以應(yīng)對(duì)日常開發(fā)了。
2. Mybatis JdbcType官方文檔

查閱Mybatis JdbcType官方文檔是很有必要的!
3. 說明
對(duì)于自己不肯定的,調(diào)整代碼多嘗試下,能夠使自己加深印象!
4. 更新日志
2017-04-26 修改內(nèi)容:MySQL中沒有CLOB類型,謝謝@火靈 指正。
| Mybatis | JdbcType | Oracle | MySql |
|---|---|---|---|
| JdbcType | CLOB | CLOB | CLOB–>修改為TEXT |
補(bǔ)充知識(shí):MyBatis 指定JdbcType. 如#{name,jdbcType=VARCHAR}
在執(zhí)行SQL時(shí)MyBatis會(huì)自動(dòng)通過對(duì)象中的屬性給SQL中參數(shù)賦值,它會(huì)自動(dòng)將Java類型轉(zhuǎn)換成數(shù)據(jù)庫的類型。而一旦傳入的是null 程序就無法準(zhǔn)確判斷這個(gè)類型應(yīng)該是什么(是Integer?是VARCHAR?還是別的?),就有可能將類型轉(zhuǎn)換錯(cuò)誤,從而報(bào)錯(cuò)。
加入jdbcType正是為了解決這樣的報(bào)錯(cuò),需要針對(duì)這些可能為空的字段,手動(dòng)指定其轉(zhuǎn)換時(shí)用到的類型。
一般情況下,我們沒有必要按個(gè)字段去識(shí)別/判斷它是否可以為空,而是將所有的字段都當(dāng)做可以為空,全部手動(dòng)設(shè)置轉(zhuǎn)換類型。
<insert id="save"
parameterType="com.tarena.entity.Cost">
insert into cost values(
cost_seq.nextval,
#{name,jdbcType=VARCHAR},
#{base_duration,jdbcType=INTEGER},
#{base_cost,jdbcType=DOUBLE},
#{unit_cost,jdbcType=DOUBLE},
#{status,jdbcType=CHAR},
#{descr,jdbcType=VARCHAR},
#{creatime,jdbcType=TIMESTAMP},
#{startime,jdbcType=TIMESTAMP},
#{cost_type,jdbcType=CHAR}
)
</insert>
其他數(shù)據(jù)類型參照下圖

以上這篇MyBatis JdbcType 與Oracle、MySql數(shù)據(jù)類型對(duì)應(yīng)關(guān)系說明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺析 ArrayList 和 LinkedList 有什么區(qū)別
ArrayList 和 LinkedList 有什么區(qū)別,是面試官非常喜歡問的一個(gè)問題。今天通過本文給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧2020-10-10
Spring TransactionalEventListener事務(wù)未提交讀取不到數(shù)據(jù)的解決
這篇文章主要介紹了Spring TransactionalEventListener事務(wù)未提交讀取不到數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring-boot結(jié)合Shrio實(shí)現(xiàn)JWT的方法
這篇文章主要介紹了Spring-boot結(jié)合Shrio實(shí)現(xiàn)JWT的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
Java?for循環(huán)標(biāo)簽跳轉(zhuǎn)到指定位置的示例詳解
這篇文章主要介紹了Java?for循環(huán)標(biāo)簽跳轉(zhuǎn)到指定位置,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Java編程小實(shí)例—數(shù)字時(shí)鐘的實(shí)現(xiàn)代碼示例
正所謂拳不離手曲不離口,java學(xué)習(xí)的過程中,練習(xí)還是要多一點(diǎn)比較好。接下來分享給大家一個(gè)Java編程的小實(shí)例,供朋友們參考。2017-10-10
java 計(jì)算中位數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了java 計(jì)算中位數(shù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Springboot項(xiàng)目啟動(dòng)時(shí)如何用命令動(dòng)態(tài)指定環(huán)境
這篇文章主要介紹了Springboot項(xiàng)目啟動(dòng)時(shí)如何用命令動(dòng)態(tài)指定環(huán)境的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

