Posted on 2008-01-02 20:48
云自无心水自闲 阅读(8570)
评论(3) 编辑 收藏 所属分类:
Java 、
心得体会
在iBatis中,对于in子句的标准做法是采用动态sql来解决的。具体方法大致是:Java代码传入一个List或者数组,然后在sqlMapConfig映射中使用iterate循环取这个变量,动态地生成sql语句。
这个标准解法的缺点是,使用起来比较麻烦
1. 需要在sqlMapConfig中使用动态语句
2. 需要传入一个Iterable的变量
对于这个问题,我使用了一个偷懒的办法,就是使用$标记。
在iBatis中,普通的变量,比如:v,是使用#号,在这个例子中,就是:#v#。
这样,iBatis会使用prepareStatement,并对变量进行变量绑定。
而$符号是简单替代的用法,在数据库的执行效率上要比前一种差。但优点就是简单方便。
比如:
SELECT * FROM emp WHERE emp_no in ($empString$);
而empString的值就是1, 2, 3. 在Log中,可以看到,Sql语句就是:SELECT * FROM emp WHERE emp_no in (1,2,3)