ibatis动态SQL与非动态条件相结合,在参数均不符条件时报错的解决办法!

    在使用ibatis的过程中,很多时候要用的动态SQL,特别是where由为常用。

 

但是大家在用的时候,就会发现如果全部是带参数的动态条件是一点问题也不会有的,但如果我想以一个写死的条件与动态条件相结合的方式进行查询,我们就会发现动态参数全都不合条件的时候就会出现SQL异常。

 

 

得到的SQL语句就是:select * from news t,category s  where t.categoryid=s.categoryid  and t.flag=0 and   order by t.id

这个问题有两种解决办法:

      1、通常使用的办法是使用子查询的方式回避这个问题,但当加入分页或者业务逻辑很繁杂的时候,就会出现多层子查询,一方面是不好阅读、理解;另一方面,在运行覆效率上,也不是很优。

      2、在</dynamic>前面,where的最后加入一个1=1条件,并用判断只当全部参数不符合条件时成立。


 

以这种方式便可以得到sql:select * from news t,category s  where t.categoryid=s.categoryid  and t.flag=0 and 1=1 order by t.id

 

问题解决了。

 

这只是我个人的一个思路,办法一定还有很多种,大家见笑了。

这是我在CSDN上的第一篇文字,还请各位大虾多多指教!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值