虾米链接: 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次查询,对查询也是有影响的。