ibatis的in函数的使用

来源:互联网 发布:javascript resources 编辑:程序博客网 时间:2024/05/17 07:16

最近遇到工作中需要用到ibatis中的in函数,如果是固定的数据,则 在sql中直接 in (1,2,3,4)直接使用即可,或者在Java代码中使用StringBuilder 或StringBuffer进行拼接即可

在ibatis中sql.xml 中

一种是通过占位符 $  的方式

String sheetid =“1,2,3,4,5”;如果是int类型,则需要用convert进行转换

   <sql id="xxx">

     select * from xxxx  where     

    <![CDATA[    id in ($sheetid$)  ]]>
    </sql>

  这种方式的优点就是简单,但是用$符 时要注意sql的注入


一种是用ibatis特有的函数进行循环

activityIds 需要确保为list 或数组

List<String> activityIds =new ArrayList<String>();

activityIds.add("1");

activityIds.add("2");

activityIds.add("3");


<sql id="xxxx">
     select * from xxx where
          and id in
             <iterate property="activityIds" open="(" close=")" conjunction=",">  
                       #activityIds[]#
            </iterate>
    </sql>
   
验证后这两种方式都可行,第二种建议,可以减少sql注入的风险