背景

见共事代码中应用到jdbcType,很是纳闷。

常识

这是为了程序的安全性,使一些非凡状况,当传入的参数为name为空时不会使程序呈现问题,当name为空时,mybatis不晓得具体要转换成什么jdbcType类型,有些非凡状况会报错,Mybatis经常出现的:有效的列类型: 1111 谬误,就是因为没有设置JdbcType造成的。在Mybatis中,也明文倡议在映射字段数据时须要将JdbcType属性加上。这样相对来说是比拟平安的。
  以下状况是在保障了前四种是不能为空的前提下,而前面几项为空时也不至于程序报错。

`<insert id="saveRole">

insert into role_p values (    #{roleId},    #{name},    #{remarks},    #{orderNo},    #{createBy,jdbcType=VARCHAR},    #{createDept,jdbcType=VARCHAR},    #{createTime,jdbcType=DATE},    #{updateBy,jdbcType=VARCHAR},    #{updateTime,jdbcType=DATE})

</insert>`
常见的类型对应关系如下:

JDBC Type           Java TypeCHAR                StringVARCHAR             StringLONGVARCHAR         StringNUMERIC             java.math.BigDecimalDECIMAL             java.math.BigDecimalBIT                 booleanBOOLEAN             booleanTINYINT             byteSMALLINT            shortINTEGER             INTEGERBIGINT              longREAL                floatFLOAT               doubleDOUBLE              doubleBINARY              byte[]VARBINARY           byte[]LONGVARBINARY       byte[]DATE                java.sql.DateTIME                java.sql.TimeTIMESTAMP           java.sql.TimestampCLOB                ClobBLOB                BlobARRAY               ArrayDISTINCT            mapping of underlying typeSTRUCT              StructREF                 RefDATALINK            java.net.URL

JdbcType类型和Java类型的对应关系(java.sql.date,java.sql.time,java.sql,Timestamp)
https://blog.csdn.net/fanfan1...

参考

http://www.mybatis.cn/archive...
https://www.cnblogs.com/lzjdm...