<强> 1。Mybatis JdbcType与甲骨文、MySql数据类型对应列表强>
Mybatis JdbcType 甲骨文 MySql JdbcType 数组 JdbcType 长整型数字 长整型数字 JdbcType 二进制 JdbcType 位 位 JdbcType 团 团 团 JdbcType 布尔 JdbcType 字符 字符 字符 JdbcType CLOB CLOB CLOB→修改为文本 JdbcType 光标 JdbcType 日期 日期 日期 JdbcType 小数 小数 小数 JdbcType 双 数量 双 JdbcType 浮动 浮动 浮动 JdbcType 整数 整数 整数 JdbcType LONGVARBINARY JdbcType 用LONGVARCHAR LONG VARCHAR JdbcType NCHAR NCHAR JdbcType NCLOB NCLOB JdbcType 零 JdbcType 数字 数字/数量 数字/JdbcType NVARCHAR JdbcType 其他 JdbcType 真正的 真正的 真正的 JdbcType 短整型 短整型 短整型 JdbcType 结构体 JdbcType 时间 时间 JdbcType 时间戳 时间戳 时间/日期时间 JdbcType 非常小的整数 非常小的整数 JdbcType 未定义的 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 甲骨文 MySql JdbcType CLOB CLOB CLOB→修改为文本<强> MyBatis指定JdbcType。如#{名字,jdbcType=VARCHAR} 强>
在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。而一旦传入的是空程序就无法准确判断这个类型应该是什么(是整数?是varchar # 63;还是别的?),就有可能将类型转换错误,从而报的错。
加入jdbcType正是为了解决这样的报错,需要针对这些可能为空的字段,手动指定其转换时用到的类型。
一般情况下,我们没有必要按个字段去识别/判断它是否可以为空,而是将所有的字段都当做可以为空,全部手动设置转换类型。
& lt;插入id=氨4妗? parameterType=癱om.tarena.entity.Cost”比; 插入成本值( cost_seq.nextval, #{名称、jdbcType=VARCHAR} # {base_duration jdbcType=整数}, # {base_cost jdbcType=双}, # {unit_cost jdbcType=双}, #{状态、jdbcType=字符} #{备注说明,jdbcType=VARCHAR}, # {creatime jdbcType=时间戳}, # {startime jdbcType=时间戳}, # {cost_type jdbcType=字符} ) & lt;/insert>
其他数据类型参照下图