mybatis 映射文件中,if标签判断字符串相等与否
正确方式
- 方式一,判断相等【加.toString()转换成字符串】
<if test="remark != null and remark != ''and auditidentified =='2'.toString()">
,refusalreason=#{remark,jdbcType=VARCHAR}
</if>
- 方式二,判断相等【单引号,里面套双引号】
<if test='remark != null and remark != "" and auditidentified =="2"'>
,refusalreason=#{remark,jdbcType=VARCHAR}
</if>
- 方式三
错误方式
特别注意,不能这样写
<if test="remark != null and remark != ''and auditidentified =='2'">
,refusalreason=#{remark,jdbcType=VARCHAR}
</if>
原因:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’2’会被解析成字符,java是强类型的,char 和一个string 会导致不等,所以if标签中的sql不会被解析。
总结
- if标签里,判断相等或不相等
单个字符需要加.toString(),如:auditidentified =='2'.toString()
- if标签里,判断相等或不相等
多个字符不需要加toString(),如:auditidentified !='2155'