ids值太多, select * from table where id in (ids) 不起作用怎么办
可以把ids拆分成多个部分,例如:select * from table where ( id in (ids1) or id in (ids2) or
id in(ids3)…)
String[] ids
具体代码如下:
if(ids!=null&&ids.length>0){
if(ids.length>1000){
Object[] subAry = StringUtils.splitAry(ids);
int i=0;
for(Object obj: subAry){
i++;
String[] aryItem = (String[]) obj;
if(i==1){
sqlString += " and ( seq in (:aryItem"+i+") ";
}else{
sqlString += " or seq in (:aryItem"+i+") ";
}
parameter.put("aryItem"+i, aryItem);//参数及值,键值对存储
}
if(subAry.length>0){
sqlString += " )";
}
}else{
sqlString += " and seq in (:ids) ";
parameter.put("ids", ids);
}
}