Mybatis之jdbcType
在mapper.xml中,写java类映射数据库表字段的时候,有jdbcType,之前并没有很注意,发现有些人习惯在写mybatis写sql的时候,映射关联参数时喜欢加上jdbcType=xxx
<insert id="insert" parameterType="java.xx.xx" >
insert into table_xxx values(
name = #{name,jdbcType=VARCHAR}
)
) </insert>
例如上面的jdbcType=VARCHAR,这是为了程序的安全性,使一些特殊情况,当传入的参数为name为空时不会使程序出现问题,当name为空时,mybatis不知道具体要转换成什么jdbcType类型,有些特殊情况会报错,Mybatis经常出现的:无效的列类型: 1111 错误,就是因为没有设置JdbcType造成的。以后还是必须加jdbcType了,下面给出一些常见的jdbcType和java类型的对应:
JDBC Type Java Type
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER INTEGER
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL