大家好,我是CodeAlchemist
一个天天和Java、Oracle打交道的后端开发。
上周遇到一个经典问题:MyBatis操作Oracle时报错“Invalid column type: 1111”,相信很多用Oracle的小伙伴都踩过这个坑。
【问题场景】
在批量更新时,某个字段传入了null值,MyBatis默认使用JdbcType.OTHER,但Oracle不认这个类型,直接报错。
【传统解法】
在Mapper XML里给每个字段加jdbcType:
#{fieldName, jdbcType=VARCHAR}
但问题来了:几十个字段挨个加,手都快废了![]()
【TRAE神助攻】
这时我请出了TRAE帮忙:
- 选中整个Mapper文件,输入指令:“为所有参数添加jdbcType,字符串类型加VARCHAR,数字类型加INTEGER”
- TRAE秒级识别并批量添加
- 一键应用,10分钟的工作10秒搞定!
【效果对比】
修改前:半小时+眼瞎风险
修改后:10秒+喝着咖啡搞定
【小贴士】
如果全局都想解决这个问题,可以在application.yml配置:
mybatis:
configuration:
jdbc-type-for-null: ‘null’
但TRAE这种精准“下药”的方式,既解决问题又不影响全局,我觉得更优雅!
大家遇到过这个坑吗?欢迎交流讨论![]()