mybatis中动态update中的isNotEmpty和isNotNull标签

时间:2021-08-01 21:41:33

一,简介

在iBATIS中isNull用于判断参数是否为Null,isNotNull相反
isEmpty判断参数是否为Null或者空,满足其中一个条件则其true
isNotEmpty相反,当参数既不为Null也不为空是其为true
判断之后做相对应的表达式操作

 

二,区别

 1 <update id="updateRole" parameterClass="com.mmblue.model.Role">  
 2     <![CDATA[ 
 3         UPDATE role 
 4         SET 
 5             gmt_modified = to_date(#gmtModified#,'yyyy-mm-dd hh24:mi:ss'), 
 6             modifier = #modifier# 
 7     ]]>  
 8         <dynamic>  
 9             <isNotEmpty property="isDeleted" prepend=",">  
10                 <![CDATA[ 
11                     is_deleted = #isDeleted# 
12                 ]]>  
13             </isNotEmpty>  
14             <isNotEmpty property="roleCode" prepend=",">  
15                 <![CDATA[  
16                     role_code = #roleCode# 
17                 ]]>  
18             </isNotEmpty>  
19             <isNotEmpty property="roleName" prepend=",">  
20                 <![CDATA[  
21                     role_name = #roleName# 
22                 ]]>  
23             </isNotEmpty>  
24             <isNotEmpty property="deptId" prepend=",">  
25                 <![CDATA[  
26                     dept_id = #deptId# 
27                 ]]>  
28             </isNotEmpty>  
29         </dynamic>  
30     <![CDATA[ 
31         WHERE id = #id# 
32     ]]>  
33 </update>  

通过上面的代码可以看到假如用isNotEmpty的时候页面假如有值,现在改成空的字符串数据库是不会有效果的,因为isNotEmpty判断的是null和“”这两个属性,所以就不会进这个方法

假如要用的话必须用isNotnull这个值判断null,而不判断“”,所以最后会把有值的改成空的字符串的。