关于sql where条件中in传值大于1000的解决办法

虾米链接: http://2814704901.iteye.com/blog/1934564

大家都知道 sql where条件中in的参数 最大为1000  如果我们要传一个大于1000的值 显然是不可行的
这里 我们可以以十为组 来传参。
List<String> urls=new ArrayList<String>();

这里urls的大小是10000

//存储10条记录List

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

int num=0;//检索到的URL集合的大小

int yu=0;//获取余数

num=urls.size();

yu=num%pageSize;

//pageTotal总页数

pageTotal = num / pageSize;

if (num % pageSize > 0){

pageTotal++;

}

if(urls.size()>0){

if(pageNo<pageTotal){

//如果当前页面小于最大页数

for(int i=(pageNo-1)*10;i<=(pageNo*10-1);i++){

list.add(urls.get(i));

}

}else{

//如果当前页面大于或等于最大页数

if(yu>0){

//如果余数大于零

for(int i=(pageNo-1)*10;i<((pageNo-1)*10+yu);i++){

list.add(urls.get(i));

}

}else{

for(int i=(pageNo-1)*10;i<pageNo*10;i++){

list.add(urls.get(i));

}

}

}

//我们只显示一页的内容 条数为10条  页码为1 

infoList=this.RgiService.searchTBIfo(10, 1, list, startTime, endTime, resource);

total=urls.size();

在你Action继承的基类中 pageSize一页中的条数以及pageNo页数 均要有get()和set()  

其中pageNo在jsp显示的 【下一页】、【最后一页】、【上一页】、【首页】的实现是在基类中实现的
和Action方法就没有关系了  我们用10和1取代了pageSize和pageNo

注意:如果查询条件in中参数值过长 如:参数是网页地址  这样查询起来会很慢 
           我们可以通过获取没一个网页地址对应的唯一ID(NUMBER类型) 来查询 
           这样 原本10s才能解决的问题 只需要2s了
          不过多了10次查询,对查询也是有影响的。

猜你喜欢

转载自2814704901.iteye.com/blog/1934564
今日推荐