mybatis update 语句的坑

最近在使用mybatis进行修改时遇到了一个很奇怪的问题 , 先看下相关的部分代码如下图:
(第一个日志写错了 , 应该是写before的 , 先忽略)
在这里插入图片描述
可以看到 , 代码主要就是调用 mapper 对数据库进行操作, 总共3步, 先查询 , 再更新, 更新完后在查 , 然后打印了一些日志排查问题.
但是, 问题点(坑)就再这, 如下图 : 记住 我框起来的部分
在这里插入图片描述
执行过程中 可以看到 刚开始查询时fillInfo不是null 的 我执行update 语句时, 传进去fillInfo 是为null 的 , 然后再执行完后再查询时, fillInfo 变成null 了 可是 , 我并不想让 fillInfo 更新成null 的!!! 如下图 我的mybatis 语句:

在这里插入图片描述
如上图 , 我框框起来的部分 , 我判断了fillInfo != null 才进行更新 , 可是通过日志来看 , 我更新时 fillInfo 明明就是null , 也就是说 ,这个判断没有生效!!! 还把数据库更新成null 了!
我找了很久的原因 , 最后也没找到 , 如下图是 resultMap 跟 java 类属性 (数据库是 text 类型) , 我尝试过给这个映射关系加上 jdbTypejavaType , 但是其实也是没啥用
在这里插入图片描述
在这里插入图片描述

最后我只能先把 第一次查询的那个值进行赋值到 update 语句的对象中, 才不会把这个字段数据库中改成 null , 只能说是一个很坑的
在这里插入图片描述

===== 时隔几个月,再回来看这篇博客,我终于知道为什么会这样了====================

我的update语句有问题
在这里插入图片描述
看这行代码
<if test="null != fillInfo != null and fillInfo != ''">fill_info = #{fillInfo},</if>
我发现我多了 一次 != null 的判断, 而多了这个条件, 等效于 <if test= true> !!!
也就是说, 难怪之前一直会赋值null, 原来 一直给它 set null 了!
话说 mybatis 这种语法居然不报错,呜呜

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值