今天调试一个非常简单的test判断字符串查询语句,怎么调试都是不好用,后来百度才发现,是我写的test标签写错了,我写成:

 <if test="record.current != null and record.current=='1'" >    注意:1旁边是单引号

 

正确写法:

 <if test="record.current != null and record.current=='1'.toString()" >

 

或者:

<if test = 'record.current != null and record.current==“1”'> 注意:1 旁边是双引号

 

因为mybatis会把'1'解析为字符,java是强类型语言,所以不能这样写,需要双引号

 

扩展一下,我们有时候项目里面很多SQL语句需要用到in查询,例如:“1,2,3,4,5”,我们可在xml的sql里面这么写:

如果数据库字段类型是数字类型,用$占位符,

<if test="xName!= null and xName!='' ">
AND x_name in(${xName})
</if>
如果数据库字段类型是字符串,用foreach标签,然后使用split函数截取就行了,
<if test="yName!= null and yName!='' ">
AND y_name in(
<foreach collection="yName.split(',')" index="index" item="item" separator=",">
#{item,jdbcType=VARCHAR}
</foreach>
)
</if>