mybatis 中使用if判断时,应该区分整型和字符型
mybatis使用的OGNL表达式,所以单个的字符要写到双引号里面才行 '0'会被解析成字符Char,java是强类型的,传进来的是String,Char 和 一个String会导致不等,所以if标签不会执行
错误的写法:
初始的Sql,当传进来的fusestatus等于字符串0时,这个if并没有执行
UPDATE ehr_og_org
<set>
<if test="fusestatus == '0'">
FDISUSETIME = SYSDATE,
</if>
FUSESTATUS = #{fusestatus},
FUSESTATUSNAME = #{fusestatusname}
</set>
WHERE FCODE = #{fcode}
</update>
正确的写法:
将if里的引号修改之后才生效
<update id ="updateOrgStatus">
UPDATE
ehr_og_org
SET
<if test='fusestatus == "0"'>
FDISUSETIME = SYSDATE,
</if>
FUSESTATUS = #{fusestatus},
FUSESTATUSNAME = #{fusestatusname}
where FCODE =#{fcode}
</update>
或者写成这样
<if test="fusestatus == '0'.toString()">
FDISUSETIME = SYSDATE,
</if>