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() ">