Mybatis插入数据null的的解决方案

传入一个数据库允许为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


发布了53 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Min_Chander/article/details/80699693