oracle JDBCType和javaType @requestbody使用实体类接收不到传值

由于没有使用过oracle数据库 增删改查

在mapper.xml 层中 对表数据进行增加

<insert id="addJz" parameterType="java.util.Map">
        insert into JZ(
        DWBH,
        CALIBRATIONTIME,
        HCCONCENTRATION,
        COCONCENTRATION,
        CO2CONCENTRATION,
        NOCONCENTRATION,
        NORELATIVEERROR,
        HCRELATIVEERROR,
        CORELATIVEERROR,
        CO2RELATIVEERROR,
        CALIBRATIONTYPE
        )values(
        #{DWBH,jdbcType=VARCHAR},to_date(#{CalibrationTime,jdbcType=DATE},'yyyy-mm-dd hh24:mi:ss'),
        #{HCConcentration,jdbcType=NUMERIC},#{COConcentration,jdbcType=NUMERIC},
        #{CO2Concentration,jdbcType=NUMERIC},#{NOConcentration,jdbcType=NUMERIC},
        #{NORelativeError,jdbcType=NUMERIC},#{HCRelativeError,jdbcType=NUMERIC},
        #{CORelativeError,jdbcType=NUMERIC},#{CO2RelativeError,jdbcType=NUMERIC},
        #{CalibrationType,jdbcType=INTEGER})
        
    </insert>        

没有加上 jdbcType 定义类型,在使用postman插入数据的时候 所有的字段value值都是不能为空的,一直没有找到原因

百度后了解了 mybatise 在插入的数据有空值试,可能为空的字段都要设置jdbcType

  javaType="double" jdbcType="NUMERIC
  javaType="string" jdbcType="VARCHAR" 
  javaType="java.sql.Date" jdbcType="DATE" 
  javaType="int" jdbcType="INTEGER"
  javaType="double" jdbcType="DOUBLE"  
  javaType="long" jdbcType="INTEGER" 
  javaType="string" jdbcType="CHAR"  
  javaType="[B" jdbcType="BLOB"  
  javaType="string" jdbcType="CLOB" 
  javaType="float" jdbcType="FLOAT"
  javaType="java.sql.Timestamp" jdbcType="TIMESTAMP" 

controller 层 使用 requestbody 实体类接收数据时 若实体类均为大写 postman传值时key 为大写  有可能接收不到传过来的数据可以加上

<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- controller层实体类接收大写 用户注册 -->
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
</bean>
</mvc:message-converters>

</mvc:annotation-driven>

 

猜你喜欢

转载自www.cnblogs.com/chenxu1997/p/12767598.html