SSM框架 mapper.xml中 value的空值判断问题

先看解决方案,其他的都是问题的出处


解决方案:if中使用 _parameter,#{value}不变

<if test="_parameter!='' and _parameter!=null">
      join scm_product p on pt.ProductTypeID=p.ProductTypeID
      where (p.ProductNameCN like concat('%',#{value},'%')
      or p.ProductNameEN like concat('%',#{value},'%'))
    </if>



问题由来:

由于最近项目转型,使用 java开发
使用ssm框架时,遇到一个问题。(java中,我也只能自认菜鸡了

问题:

先看一下数据库。


然后看看 mapper.xml

Java code
?
1
2
3
4
5
6
7
8
9
<select id= "myTest"  resultMap= "BaseResultMap"  parameterType= "java.lang.String"  >
     select
     *
     from scm_producttype pt
     < if  test= 'value!="" and value!=null' >
       where TypeNameCN= 'test'
     </ if >
     order by pt.ProductTypeID
   </select>


很明显,我在myTest方法中增加了一个if标签。这里只是例子,判断了value不为""和null

最后我在测试中,调试信息为:


很奇怪,
当传值null,那么可以查询出2条数据。(说明mapper.xml中if跳过了)
当传值"",却只能查询1条数据。(说明mapper.xml中if没有跳过



解决方案:

<if test="_parameter!='' and _parameter!=null">
      join scm_product p on pt.ProductTypeID=p.ProductTypeID
      where (p.ProductNameCN like concat('%',#{value},'%')
      or p.ProductNameEN like concat('%',#{value},'%'))
    </if>




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值