MyBatis 插入空值时,需要指定JdbcType
mybatis insert空值报空值异常,但是在PL/SQL不会提示错误,主要原因是mybatis无法进行转换
jdbcType的使用场合,只有当在insert,update和delete中有空字段时,需要使用jdbcType。
- MyBatis 包含的jdbcType类型
BIT、FLOAT、CHAR 、TIMESTAMP 、 OTHER 、UNDEFINEDTINYINT 、REAL 、VARCHAR 、BINARY 、BLOB NVARCHAR、SMALLINT 、DOUBLE 、LONGVARCHAR 、VARBINARY 、CLOB、NCHAR、INTEGER、 NUMERIC、DATE 、LONGVARBINARY 、BOOLEAN 、NCLOB、BIGINT 、DECIMAL 、TIME 、NULL、CURSOR
- Mybatis中javaType和jdbcType对应关系
JDBCType JavaTypeCHAR StringVARCHAR StringLONGVARCHAR StringNUMERIC java.math.BigDecimalDECIMAL java.math.BigDecimalBIT booleanBOOLEAN booleanTINYINT byteSMALLINT shortINTEGER intBIGINT 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[color=red][/color]
- javaType和jdbcType对应实例
//column 列名
<resultMap type="java.util.Map" id="resultjcm"><result property="FldNumber" column="FLD_NUMBER" javaType="double" jdbcType="NUMERIC"/><result property="FldVarchar" column="FLD_VARCHAR" javaType="string" jdbcType="VARCHAR"/><result property="FldDate" column="FLD_DATE" javaType="java.sql.Date" jdbcType="DATE"/><result property="FldInteger" column="FLD_INTEGER" javaType="int" jdbcType="INTEGER"/><result property="FldDouble" column="FLD_DOUBLE" javaType="double" jdbcType="DOUBLE"/><result property="FldLong" column="FLD_LONG" javaType="long" jdbcType="INTEGER"/><result property="FldChar" column="FLD_CHAR" javaType="string" jdbcType="CHAR"/><result property="FldBlob" column="FLD_BLOB" javaType="Blob" jdbcType="BLOB" /><result property="FldClob" column="FLD_CLOB" javaType="string" jdbcType="CLOB"/><result property="FldFloat" column="FLD_FLOAT" javaType="float" jdbcType="FLOAT"/><result property="FldTimeStamp" column="FLD_TIMESTAMP" javaType="java.sql.Timestamp" jdbcType="TIMESTAMP"/></resultMap>