解决使用mybatis更新字段时字段都为null导致sql语法出错的问题


  自从5月初跳槽换了一份新工作之后自己就没有更新过一篇技术博客,究其原因,主要是自己还处于试用期,目前还处在熟悉公司业务和代码的过程,所以也就一直抽不出时间来写技术博客了。但这都不是理由,之前自己制定的每周至少写一篇技术博客的计划一定不能放弃,抛开过往,从这周开始一切恢复正常!

  来到新公司写业务代码时,自己逐步熟悉了使用xml的形式来进行Mybatis相关持久层的开发(在上家公司自己一直都是使用注解的形式写sql呢)。就在上周的时候自己遇到了一个生产bug,二话不说,先上图:
生产错误日志截图  相信大家看了上面的截图不难发现update语句中缺少了字段的更新也就是set 字段名1 = 字段值1, 字段名2 = 字段值2…,为什么好端端的一个更新语句就出现问题了呢?于是自己马上定位到了这个更新sql语句所在的xml,二话不说,再上图:
在这里插入图片描述
  相信看了上图的小伙伴也已经知道我想表达的意思了。没错,红框中的四个属性都是为null的,所以也就导致了 update t_trade_item where id = ? ; 这样的动态sql语句的生成。那么该如何解决呢?很简单,网上有个小伙伴讲得挺不错的,他说:所有在写更新语句时最好加上一个唯一标识的字段,以避免出现这样的更新报错。 所以我果断采取了他的方法,在set标签下多加了表t_trade_item的主键id的更新,修改后如下图所示:
在这里插入图片描述
  哈哈,因为更新的时候主键id肯定是有值的,所以在更新时一定可以保证正常更新,从而避免了这个bug的发生。

  好,今天的技术博客就写到这里。以后每周至少更新一篇技术博客,欢迎大家积极监督!

参考博客:
【笔记】mybatis 遇到所有更新的字段都是null或空字符串

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Melo_FengZhi

您的鼓励对我就是巨大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值