mybatis 中 if-test 判断

之前用都是判断参数是否为空之类的,今天要判断等于一个字符,直接写等于号反而会没有执行直接跳过,后来上网查阅了资料才知道

原因是:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’1’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。

所以单个的字符要写到双引号里面或者使用.toString()才行:

<if test="runType=='1'.toString()||runType=='2'.toString()">
            and a.run_type=#{runType}
</if>

目前只用到这里,后续有新用法继续添加

 

posted @ 2022-11-30 17:18  浮笙芸芸  阅读(947)  评论(0)    收藏  举报