mybatics中【<if test="takeWay == '0'">】mybatis的if判断

1、问题:

正常在mapper.xml中使用test,最常用的就是判断某个属性不为空,则对其进行赋值,如下:
<if test="accNo != null and accNo != '' ">
and fav.accNo = #{accNo}
</if>

但是有时候可能需要在mapper.xml中根据传参条件进行查不同表进行判断,如下:

<if test="accountAdjustType == '2' " >
AND NOT EXISTS (
select 1 from fj_check_bill cb,fj_check c
where
cb.paymentId = fav.paymentId
and  cb.premiumFlag='1' 
and  cb.premiumVATFlag='1'
and c.validFlag='0'
and cb.checkBillNo = c.checkBillNo
)
</if>

<if test="accountAdjustType == '3' " >
AND NOT EXISTS (
select 1 from fj_settle_bill fsb,fj_settle s
where
fsb.paymentId = fav.paymentId
and  fsb.premiumFlag='1' 
and  fsb.premiumVATFlag='1'
and s.validFlag='0'
and fsb.settleNo = s.settleNo
)
</if>

但是,这种传递方式springMVC中解析为字符,不是强对象类型,因此需要做对应的转义操作,如下:

(1)<if test="accountAdjustType == '2'.toString() " >
AND NOT EXISTS (
select 1 from fj_check_bill cb,fj_check c
where
 cb.paymentId = fav.paymentId
 and  cb.premiumFlag='1' 
 and  cb.premiumVATFlag='1'
 and c.validFlag='0'
 and cb.checkBillNo = c.checkBillNo
)
</if>

(2)<if test='accountAdjustType == "1" ' >
AND NOT EXISTS (
select 1 from fj_check_bill cb,fj_check c
where
 cb.paymentId = fav.paymentId
 and  cb.premiumFlag='1' 
 and  cb.premiumVATFlag='1'
 and c.validFlag='0'
 and cb.checkBillNo = c.checkBillNo
)
</if>

<if test='takeWay == "1"'>或者改为<if test="takeWay == '1'.toString() ">

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值