在Java语言开发的过程里,MyBatis 默认的 update 操作对 null 属性的处理方式是什么?
写个简单的 demo 测试一下就知道,直接调用 Mapper 类的 update 方法,如果实体字段为 null ,是不会拼接到 update 字段后面的。
如果需要根据实体的属性值,严格更新数据库,那么需要自定义 update 方法。不排除开发中有这种需求,即需要将某列修改为 null ,此时默认方法就不满足需求。
默认更新,你可以根据自己需求来判断
如 Type 不为null 时,更新 TYPE 字段;
<if test="Type != null"> TYPE = #{Type}</if>
如 Type 为null 时,不更新 TYPE 字段;
<if test="Type == null"> TYPE = TYPE</if>
正常情况下,在对应的mapper.xml文件里写你要传的参数是什么。
调用的时候可以通过标签过滤
<if test="name != null and name!="" ">and name = #{name}</if>
以上就是name参数不是必输的情况下做出过滤。
简述一下,mybatis的xml相当于实现了dao或者mapper 的接口 ,每个id相当于一个方法,if标签相当于java的if判断
如下:如果是Integer类型等可以用这种方式判断,对应的实体类型尽量用封装包 int用integer ,long 用 Long 等
<if test="aaa != null"> aaa = #{aaa}</if>
字符串String可以用如下方式判断:
<if test="name != null and name!="" ">and name = #{name}</if>
具体的判断条件按照自己的业务类型来判断。