java的jdbc插入的时候,遇到null情况报错问题
分析原因:
在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。而一旦传入的是null它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。
解决办法:
参数增加jdbcType标识数据类型。(注意:这时候参数{}前统一用#)
<insert id="insert_air_hour" parameterType="java.util.Map"> insert into pollute_hour_gas(mp_id, update_time, data_time, create_time, pollutant_code, flag, outlet_standard, mstatus, astatus, estatus, sstatus, cou_value, avg_value, min_value, max_value, avg_zs, min_zs, max_zs) values (#{params.mp_id,jdbcType=VARCHAR},#{params.update_time,jdbcType=TIMESTAMP},#{params.data_time,jdbcType=TIMESTAMP},#{params.create_time,jdbcType=TIMESTAMP},#{params.pollutant_code,jdbcType=VARCHAR},#{params.flag,jdbcType=VARCHAR}, #{params.outlet_standard,jdbcType=VARCHAR},#{params.mstatus,jdbcType=VARCHAR},#{params.astatus,jdbcType=VARCHAR},#{params.estatus,jdbcType=VARCHAR},#{params.sstatus,jdbcType=VARCHAR}, ${params.cou_value,jdbcType=NUMERIC},${params.avg_value,jdbcType=NUMERIC},${params.min_value,jdbcType=NUMERIC},${params.max_value,jdbcType=NUMERIC},${params.avg_zs,jdbcType=NUMERIC},${params.min_zs,jdbcType=NUMERIC},${params.max_zs,jdbcType=NUMERIC}) </insert>
下面表格列出所有的jdbc数据类型对照表:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)