执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。如果传入的是
null
它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。
要解决这个问题,可能为空的字段需要手动指定类型
一般情将所有的字段都当做可以为空,全部手动设置转换类型。
<insert id="save" parameterType="com.ten.entity.Uost">
insert into u_cost values(
cost_seq.nextval,
#{name,jdbcType=VARCHAR},
#{unit_cost,jdbcType=DOUBLE},
#{status,jdbcType=CHAR},
#{creatime,jdbcType=TIMESTAMP},
#{startime,jdbcType=TIMESTAMP}
)
</insert>