背景
见共事代码中应用到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...