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中部分沒(méi)有對(duì)應(yīng)到Oracle和Mysql的數(shù)據(jù)類型中(或許由于自己遺漏),不過(guò)不用擔(dān)心,后續(xù)大家碰到再具體分析;同時(shí)上述對(duì)應(yīng)關(guān)系不一定是一一對(duì)應(yīng),請(qǐng)大家了解。
大家主要掌握基本的數(shù)字、時(shí)間、字符串就足以應(yīng)對(duì)日常開(kāi)發(fā)了。
2. Mybatis JdbcType官方文檔
查閱Mybatis JdbcType官方文檔是很有必要的!
3. 說(shuō)明
對(duì)于自己不肯定的,調(diào)整代碼多嘗試下,能夠使自己加深印象!
4. 更新日志
2017-04-26 修改內(nèi)容:MySQL中沒(méi)有CLOB類型,謝謝@火靈 指正。
Mybatis | JdbcType | Oracle | MySql |
---|---|---|---|
JdbcType | CLOB | CLOB | CLOB–>修改為TEXT |
補(bǔ)充知識(shí):MyBatis 指定JdbcType. 如#{name,jdbcType=VARCHAR}
在執(zhí)行SQL時(shí)MyBatis會(huì)自動(dòng)通過(guò)對(duì)象中的屬性給SQL中參數(shù)賦值,它會(huì)自動(dòng)將Java類型轉(zhuǎn)換成數(shù)據(jù)庫(kù)的類型。而一旦傳入的是null 程序就無(wú)法準(zhǔn)確判斷這個(gè)類型應(yīng)該是什么(是Integer?是VARCHAR?還是別的?),就有可能將類型轉(zhuǎn)換錯(cuò)誤,從而報(bào)錯(cuò)。
加入jdbcType正是為了解決這樣的報(bào)錯(cuò),需要針對(duì)這些可能為空的字段,手動(dòng)指定其轉(zhuǎn)換時(shí)用到的類型。
一般情況下,我們沒(méi)有必要按個(gè)字段去識(shí)別/判斷它是否可以為空,而是將所有的字段都當(dāng)做可以為空,全部手動(dòng)設(shè)置轉(zhuǎn)換類型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
< 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)系說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/loongshawn/article/details/50496460