借用网友的描述
更新一条记录一般都是传入一个Entity实例,然后Sql语句通过主键查找要更新的记录、通过字段为Null或为空判断要更新的字段。
但是,这种做法存在Bug:
比如某人在某个允许为空的字段(例如[家庭住址])填写了内容,然后他想删除掉,于是他在页面上把这个字段的内容清空, 然后点保存,然后…他会发现原先的内容居然还在,没有办法清除了!
或许这个实例,大家会说,那我就只判断Null不判断空好了。
可是,假如这个允许为空的字段是一个日期型呢?我们如何判断是要清空这个字段还是保持不变?
或许大家会说,你在前面的业务层肯定能知道是要清空还是要保持不变,但是问题在于,Mapper层要怎么判断呢?判断Null和判断空都不可行了,那么应该怎样判断呢?
温馨提示:答案为网友推荐,仅供参考
第1个回答 2018-03-16
<if test="name!=null and name!=''">
</if>
</if>
这么判断就行
追问这样的话,给name赋空值时,name=null仍然是传不进去的呀
本回答被网友采纳第2个回答 2019-06-21
不知这样是否符合业务:DAO层只判断是否为空,若为空,则表示这个字段不需要更新,若要更新为空,业务层传个空字符串