1.Mybatis中"if else"的写法
在SSM框架中编写mapper.xml的时候,需要对数据库进行操作。在对数据库操作的时候有时会遇到需要判断字段内容的情况,如果只需要判断字段满足某个条件,那么直接使用:
1 2 3 |
|
但是如果需要else操作的话可以使用以下语句:
1 2 3 4 5 6 7 8 |
|
2.Mybatis if 判断等于一个字符串
当==后面为数字时不生效问题,如
<if test=" name!=null && name =='1' "><if/>
这样子写会出现 后面的 name =='1' 失效问题。
解决办法为
<if test=‘ name!=null && name =="1" '><if/> 把这个转换成 单引号。
或者
<if test=" name!=null && name =='1'.toString() "><if/>
还有当传入的type的值为y的时候,if判断内的sql也不会执行。
<if test="type=='y'">
and status = 0
</if>
mybatis是使用的OGNL表达式来进行解析的,在OGNL的表达式中,'y'会被解析成字符,因为java是强类型的,char 和 一个String 会导致不等。所以if标签中的sql不会被解析。
当使用<if test="name!=null && name == ' ' "><if/>判断时,如果name值为0时此时也会失效,
原因:由于 "".length() = 0
,传递的参数 name值是 0 时 name!= ''
就变成 0.0 != 0.0
这个是 false,
此时筛选条件不起作用。