MyBatis JdbcType 與Oracle、MySql資料型別對應關係說明
阿新 • • 發佈:2020-09-16
1. Mybatis JdbcType與Oracle、MySql資料型別對應列表
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中部分沒有對應到Oracle和Mysql的資料型別中(或許由於自己遺漏),不過不用擔心,後續大家碰到再具體分析;同時上述對應關係不一定是一一對應,請大家瞭解。
大家主要掌握基本的數字、時間、字串就足以應對日常開發了。
2. Mybatis JdbcType官方文件
Mybatis JdbcType官方文件
查閱Mybatis JdbcType官方文件是很有必要的!
3. 說明
對於自己不肯定的,調整程式碼多嘗試下,能夠使自己加深印象!
4. 更新日誌
2017-04-26 修改內容:MySQL中沒有CLOB型別,謝謝@火靈 指正。
Mybatis | JdbcType | Oracle | MySql |
---|---|---|---|
JdbcType | CLOB | CLOB | CLOB–>修改為TEXT |
補充知識:MyBatis 指定JdbcType. 如#{name,jdbcType=VARCHAR}
在執行SQL時MyBatis會自動通過物件中的屬性給SQL中引數賦值,它會自動將Java型別轉換成資料庫的型別。而一旦傳入的是null 程式就無法準確判斷這個型別應該是什麼(是Integer?是VARCHAR?還是別的?),就有可能將型別轉換錯誤,從而報錯。
加入jdbcType正是為了解決這樣的報錯,需要針對這些可能為空的欄位,手動指定其轉換時用到的型別。
一般情況下,我們沒有必要按個欄位去識別/判斷它是否可以為空,而是將所有的欄位都當做可以為空,全部手動設定轉換型別。
<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,#{status,jdbcType=CHAR},#{descr,#{creatime,jdbcType=TIMESTAMP},#{startime,#{cost_type,jdbcType=CHAR} ) </insert>
其他資料型別參照下圖
以上這篇MyBatis JdbcType 與Oracle、MySql資料型別對應關係說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。