MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明

网友投稿 410 2022-11-22


MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明

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 JdbcThttp://ype官方文档是很有必要的!

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正是为了解决这样的报错,需要针对这些可能为空的字段,手动指定其转换时用到的类型。

一般情况下,我们没有必要按个字段去识别/判断它是否可以为空,而是将所有的字段都当做可以为空,全部手动设置转换类型。

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}

)

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}

)

其他数据类型参照下图


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot2.1.x,创建自己的spring
下一篇:Springboot之修改启动端口的两种方式(小结)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~