mybatis if test 判断字符串的坑

今天调试一个非常简单的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>

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值