MyBatis中的JdbcType映射使用詳解
Java項目涉及到數據庫交互,以往常用的是JDBC,現在則有Hibernate、Mybatis等這些持久化支持。
項目中用到了MyBatis,和JDBC最顯著的區(qū)別,就是SQL語句配置化,通過xml文件定義SQL語句,當然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,或者注解,就能完成數據庫交互。
xml配置文件,可用MyBatis自己定義的數據類型,引自: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參數類型為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,相互之間的映射關系,比較詳細:
1. Mybatis JdbcType與Oracle、MySql數據類型對應列表
| 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中部分沒有對應到Oracle和Mysql的數據類型中(或許由于自己遺漏),不過不用擔心,后續(xù)大家碰到再具體分析;同時上述對應關系不一定是一一對應,請大家了解。
大家主要掌握基本的數字、時間、字符串就足以應對日常開發(fā)了。
2. Mybatis JdbcType官方文檔

查閱Mybatis JdbcType官方文檔是很有必要的!
3. 說明
對于自己不肯定的,調整代碼多嘗試下,能夠使自己加深印象!
4. 更新日志
2017-04-26 修改內容:MySQL中沒有CLOB類型,謝謝@火靈 指正。
| Mybatis | JdbcType | Oracle | MySql |
|---|---|---|---|
| JdbcType | CLOB | CLOB | CLOB–>修改為TEXT |
以上這篇MyBatis中的JdbcType映射使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot validator參數驗證restful自定義錯誤碼響應方式
這篇文章主要介紹了SpringBoot validator參數驗證restful自定義錯誤碼響應方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結
這篇文章主要介紹了Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結的相關資料,需要的朋友可以參考下2016-06-06
SpringBoot實戰(zhàn):Spring如何找到對應轉換器優(yōu)雅使用枚舉參數
這篇文章主要介紹了SpringBoot實戰(zhàn)中Spring是如何找到對應轉換器優(yōu)雅的使用枚舉參數,文中附有詳細的實例代碼有需要的朋友可以參考下,希望可以有所幫助2021-08-08
SpringBoot項目從18.18M瘦身到0.18M的實現
本文主要介紹了SpringBoot項目從18.18M瘦身到0.18M的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01
Spring中@PropertySource的使用方法和運行原理詳解
這篇文章主要介紹了Spring中@PropertySource的使用方法和運行原理詳解,PropertySource注解可以方便和靈活的向Spring的環(huán)境容器(org.springframework.core.env.Environment?Environment)中注入一些屬性,這些屬性可以在Bean中使用,需要的朋友可以參考下2023-11-11

