MyBatis JdbcType 如何与 Oracle 和 MySQL 数据类型精确匹配?
- 内容介绍
- 文章标签
- 相关推荐
本文共计969个文字,预计阅读时间需要4分钟。
1. Mybatis JdbcType与Oracle、MySQL数据类型对应关系表: - Mybatis JdbcType | Oracle | MySQL - ARRAY | ARRAY | ARRAY - BIGINT | NUMBER | BIGINT - BINARY | RAW | BINARY - BIT | NUMBER | BIT - BLOB | BLOB | BLOB - BOOLEAN | NUMBER | BOOLEAN - CHAR | CHAR | CHAR - CLOB | CLOB | TEXT
1. Mybatis JdbcType与Oracle、MySql数据类型对应列表
注意到, MyBatis的JdbcType中部分没有对应到Oracle和Mysql的数据类型中(或许由于自己遗漏),不过不用担心,后续大家碰到再具体分析;同时上述对应关系不一定是一一对应,请大家了解。
大家主要掌握基本的数字、时间、字符串就足以应对日常开发了。
2. Mybatis JdbcType官方文档
Mybatis JdbcType官方文档
查阅Mybatis JdbcType官方文档是很有必要的!
3. 说明
对于自己不肯定的,调整代码多尝试下,能够使自己加深印象!
4. 更新日志
2017-04-26 修改内容:MySQL中没有CLOB类型,谢谢@火灵 指正。
补充知识: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,jdbcType=DOUBLE}, #{status,jdbcType=CHAR}, #{descr,jdbcType=VARCHAR}, #{creatime,jdbcType=TIMESTAMP}, #{startime,jdbcType=TIMESTAMP}, #{cost_type,jdbcType=CHAR} ) </insert>
其他数据类型参照下图
以上这篇MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。
本文共计969个文字,预计阅读时间需要4分钟。
1. Mybatis JdbcType与Oracle、MySQL数据类型对应关系表: - Mybatis JdbcType | Oracle | MySQL - ARRAY | ARRAY | ARRAY - BIGINT | NUMBER | BIGINT - BINARY | RAW | BINARY - BIT | NUMBER | BIT - BLOB | BLOB | BLOB - BOOLEAN | NUMBER | BOOLEAN - CHAR | CHAR | CHAR - CLOB | CLOB | TEXT
1. Mybatis JdbcType与Oracle、MySql数据类型对应列表
注意到, MyBatis的JdbcType中部分没有对应到Oracle和Mysql的数据类型中(或许由于自己遗漏),不过不用担心,后续大家碰到再具体分析;同时上述对应关系不一定是一一对应,请大家了解。
大家主要掌握基本的数字、时间、字符串就足以应对日常开发了。
2. Mybatis JdbcType官方文档
Mybatis JdbcType官方文档
查阅Mybatis JdbcType官方文档是很有必要的!
3. 说明
对于自己不肯定的,调整代码多尝试下,能够使自己加深印象!
4. 更新日志
2017-04-26 修改内容:MySQL中没有CLOB类型,谢谢@火灵 指正。
补充知识: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,jdbcType=DOUBLE}, #{status,jdbcType=CHAR}, #{descr,jdbcType=VARCHAR}, #{creatime,jdbcType=TIMESTAMP}, #{startime,jdbcType=TIMESTAMP}, #{cost_type,jdbcType=CHAR} ) </insert>
其他数据类型参照下图
以上这篇MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

