MyBatis添加空值时,需要确定JdbcType.如#{name,jdbcType=VARCHAR}版权声明

原创
小哥 3年前 (2022-11-11) 阅读数 9 #大杂烩

在执行SQL时MyBatis由对象中的属性自动给定。SQL在参数分配中,它将自动执行。Java类型将转换为数据库的类型。一旦传入null它无法准确地判断该类型应该是什么,并且有可能将该类型转换为错误,从而报告错误。
要解决此问题,您需要手动指定这些字段可能为空的类型。

一般来说,我们不需要按字段进行标识。/判断它是否可以为空,但将所有字段视为空,并手动设置转换类型。

  1. <insert id="save"

  2. parameterType="com.tarena.entity.Cost">

  3. insert into cost values(

  4. cost_seq.nextval,

  5. #{name,jdbcType=VARCHAR},

  6. #{base_duration,jdbcType=INTEGER},

  7. #{base_cost,jdbcType=DOUBLE},

  8. #{unit_cost,jdbcType=DOUBLE},

  9. #{status,jdbcType=CHAR},

  10. #{descr,jdbcType=VARCHAR},

  11. #{creatime,jdbcType=TIMESTAMP},

  12. #{startime,jdbcType=TIMESTAMP},

  13. #{cost_type,jdbcType=CHAR}

  14. )

  15. </insert>

有关其他数据类型,请参阅下图

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除