1. 在传过来的参数不为-1时,我的判断起作用了,但是若传过来的是0时,if判断不起作用了。
</where>
order by releaseDate desc
<!--分页查询-->
<if test="start!=null and start!='' and size!='' and size!=null">
limit #{start},#{size}
</if>
原因是:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’0’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
由于start等于0表示空字符,也就是ASCII码表里的0号字符,等同于‘’这个。所以‘’==start,所以条件进不去
解决办法一:使用双引号
</where>
order by releaseDate desc
<!--分页查询-->
<if test='start!=null and start!="" and size!="" and size!=null'>
limit #{start},#{size}
</if>
解决办法二:使用toString()方法转换为字符串
</where>
order by releaseDate desc
<!--分页查询-->
<if test="start!=null and start.toString()!='' and size!='' and size!=null">
limit #{start},#{size}
</if>