传入一个数据库允许为null的paramterType对象,Mybatis报错插入不能为空,此时不仅需要配置javaType,还有为其指定jdbcType,例如下面的name属性便可轻松插入空数值。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="cn.czyfwpla.xm.mapper.SpotMapper" > <resultMap id="SpotResultMap" type="cn.czyfwpla.xm.model.Spot"> <id column="id" property="id" javaType="java.lang.String" /> <id column="name" property="name" javaType="java.lang.String" jdbcType="VARCHAR" /> <id column="description" property="description" javaType="java.lang.String" /> <id column="headImg" property="headImg" javaType="java.lang.String" /> <id column="price" property="price" javaType="java.math.BigDecimal" /> <id column="route" property="route" javaType="java.lang.String" /> <id column="strategy" property="strategy" javaType="java.lang.String" /> </resultMap> <insert id="addSpot" parameterType="cn.czyfwpla.xm.model.Spot" > INSERT INTO spot (id,name,description,headImg,price,route,strategy) VALUES (#{id}, #{name}, #{description},#{headImg},#{price},#{route},#{strategy}) </insert> </mapper>
附录:javaType与jdbcType的对照表
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 int
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
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
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