mybatis更新字段为空字符串,但是数据没变
时间: 2024-03-29 20:34:11 浏览: 85
在MyBatis中更新空字符串可能会导致数据没有更新的情况。这是因为MyBatis中对空字符串和NULL值的判断不同。如果你在SQL语句中使用了类似下面的语句:
```
<if test="name != null and name != ''">
name = #{name},
</if>
```
这种情况下,当传入的参数name为空字符串时,MyBatis生成的SQL语句中不会包含name字段的更新语句。因此,即使执行成功,数据也不会发生变化。
解决这个问题的方法是在SQL语句中使用COALESCE函数将空字符串转换成NULL值:
```
<if test="name != null">
name = COALESCE(#{name}, name),
</if>
```
这样,当传入的参数name为空字符串时,MyBatis生成的SQL语句中会包含name字段的更新语句,并且将其更新为NULL值,从而达到更新数据的目的。
阅读全文