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

  • Post author:
  • Post category:其他



自从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或空字符串



版权声明:本文为Melo_FengZhi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。