ibatis的in函数的使用

最近遇到工作中需要用到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注入的风险

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值