mybatis想给其中某个字段赋成null,mapper层怎么判断这个传进来的null是 需要赋空值还是需要略过不更新
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis想给其中某个字段赋成null,mapper层怎么判断这个传进来的null是 需要赋空值还是需要略过不更新相关的知识,希望对你有一定的参考价值。
借用网友的描述
更新一条记录一般都是传入一个Entity实例,然后Sql语句通过主键查找要更新的记录、通过字段为Null或为空判断要更新的字段。
但是,这种做法存在Bug:
比如某人在某个允许为空的字段(例如[家庭住址])填写了内容,然后他想删除掉,于是他在页面上把这个字段的内容清空, 然后点保存,然后…他会发现原先的内容居然还在,没有办法清除了!
或许这个实例,大家会说,那我就只判断Null不判断空好了。
可是,假如这个允许为空的字段是一个日期型呢?我们如何判断是要清空这个字段还是保持不变?
或许大家会说,你在前面的业务层肯定能知道是要清空还是要保持不变,但是问题在于,Mapper层要怎么判断呢?判断Null和判断空都不可行了,那么应该怎样判断呢?
直接给dao层的接口方法中的参数前面加上@Param("参数名")就行了。
例如:
我之前在做条件查询的时候需要用到(☄⊙ω⊙)☄
参考技术A 不知这样是否符合业务:DAO层只判断是否为空,若为空,则表示这个字段不需要更新,若要更新为空,业务层传个空字符串 参考技术B <if test="name!=null and name!=''"></if>
这么判断就行
追问这样的话,给name赋空值时,name=null仍然是传不进去的呀
以上是关于mybatis想给其中某个字段赋成null,mapper层怎么判断这个传进来的null是 需要赋空值还是需要略过不更新的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis Puls @Select() 查询结果映射为Map为null的坑
MyBatis 查询.resultType为Map,而某个字段是clob的,怎么搞定
springboot+MyBatis返回Map时值为null的字段会丢失