第一次正式的做开发,记录一下在mybatis中踩过的坑。
1.在Mapper.xml文件中,现需要判断操作员类型是不是为1,写成
`<if test="OPERTYPE != '1' and OPERTYPE != '2'">
and id = #{OPERPOSITION}
</if>`
程序运行的结果一直为false,导致不执行if判断中的sql,运行程序不报错,没有任何提示。不会执行 id = #{OPERPOSITION}代码,原因是单个的字符要写到双引号里面才行,mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’1’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
解决方法1:
<if test="OPERTYPE != '1'.toString() and OPERTYPE != '2'.toString()">
and id = #{OPERPOSITION}
</if>`
解决方法2:
<if test='OPERTYPE != "1" and OPERTYPE != "2"'>
and id = #{OPERPOSITION}
</if>`
总结:mybatis单个的字符要写到双引号里面才行,改为或者改为