`

关于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次查询,对查询也是有影响的。

分享到:
评论

相关推荐

    SQL WHERE 条件解析器

    在实际应用中,`SQL WHERE 条件解析器`通常与前端界面结合,用户可以通过界面上的控件设置查询条件,后端服务接收到这些条件后,通过解析器生成相应的SQL查询,从而返回符合用户需求的数据。 总结来说,`SQL WHERE ...

    oracle sql in 连接大于1000报错解决办法

    oracle sq 使用l in 连接大于1000情况下报错解决办法。

    SQL存储过程IN参数的解决办法

    ### SQL存储过程IN参数的解决办法 #### 方法一:使用临时表进行参数处理 此方法主要利用了SQL Server中的临时表来实现对多个输入参数的处理。具体步骤如下: 1. **定义变量**:首先定义了一个`nvarchar(200)`类型...

    SQL中in参数化的用法

    在 SQL 中,对于 IN 操作符的使用是非常常见的,特别是在 WHERE 子句中规定多个值时。如:select * from A where ID in (1,2,3,4)。但是在实际开发中,我们不可避免地需要处理大量的数据,传统的方法是直接将参数...

    Sql Server参数化查询之where in和like实现详解

    Sql Server参数化查询之where in和like实现详解 在Sql Server中,参数化查询是提高查询性能和防止SQL注入攻击的有效方法之一。其中,where in和like是两个常用的查询条件,然而它们的参数化实现却不是那么简单。...

    Oracle查询处理in条件超过1000条

    Oracle查询处理in条件超过1000条的2种后台处理方式:A,后台拼接查询条件;B,每1000条查询一次,最后返回查询结果;

    SQL Where的简单判断

    而WHERE子句则是SQL查询中最常用的部分之一,用于过滤结果集,只返回满足特定条件的数据行。 ### SQL WHERE 子句简介 WHERE子句是SQL SELECT语句的一个关键组成部分,用于指定哪些行应该被选择。其基本语法如下: ...

    SQL_CONDITION.rar_condition sql_condition sql_sql where conditi

    在SQL查询中,`WHERE`子句是至关重要的部分,它用于从数据库中筛选出满足特定条件的记录。本文将深入探讨`WHERE`条件类在SQL查询中的使用,以及如何结合`SQL_CONDITION`来构建更复杂的查询语句。 首先,我们要明白`...

    SqlUtils工具类,Sql IN 条件拼接工具类

    `SqlUtils`工具类是Java开发中用于处理SQL语句拼接的一个实用工具,特别是针对包含`IN`条件的查询。在数据库操作中,`IN`关键字常用于筛选满足特定集合条件的记录。例如,假设我们需要查找ID在一组值中的用户,我们...

    动态拼接sql语句工具类,拼接where后面语句

    动态拼接sql语句工具类,拼接where后面语句 配合原生jdbc仿动态sql注入 if (ObjectUtil.isNotEmpty(maxLat)&&ObjectUtil.isNotEmpty(minLat)){ sqlParamList.add(new SqlParam("lat",minLat, SqlOpEnum.GE)); ...

    SQL 语句中 where 条件后 写上 1=1 是什么意思!.doc

    SQL 语句中 where 条件后 写上 1=1 是什么意思!.doc

    java调用shell向DataX传参,带where条件,特殊字符

    然后,关于DataX参数的传递,DataX任务通常通过JSON配置文件来定义,例如`etl_job_oracle2postgresql_sqlwhere_full.json`。在这个文件中,你可以定义源数据库、目标数据库以及数据过滤条件(where子句)。在涉及...

    winform树状动态生成SQL无限级where条件语句控件,动态条件

    winform下实现的一个动态无限级的自定义添加SQLwhere条件的控件,显示外观是树状列表,只要你给这控件设置好哪几个字段可以用来拼where,那么运行起来后你可以动态的无限级的添加子and/or等等条件拼接,可以支持生成...

    SQL 2008 R2 版本的参数必须大于0.参数名:build

    在SQL Server 2008 R2的安装或更新过程中,可能会遇到一个常见的错误提示:“版本参数必须大于等于0。参数名:build”。这个错误通常表明在执行安装或升级脚本时,输入的构建版本号(build number)不正确或者没有...

    Excel数据库SQL多条件查询.

    此外,SQL还支持更复杂的条件组合,如嵌套的WHERE子句,以及使用IN、BETWEEN等操作符。例如,我们可以查询价格在某个范围内的花木: ```sql SELECT * FROM 园林工程花木种类查询表 WHERE 价格 BETWEEN 100 AND 500;...

    SQL语句之条件查询-WHERE(where).docx

    在SQL查询中,`WHERE`子句是至关重要的部分,它允许我们根据特定的条件过滤结果集。在本文中,我们将深入探讨`WHERE`子句的使用,包括条件表达式筛选、逻辑表达式筛选以及模糊查询等不同类型的筛选方法。 首先,让...

    sql in,exists,not in,not exists区别

    IN、EXISTS、NOT IN、NOT EXISTS 是 SQL 中四种常用的条件判断运算符,它们之间的区别主要体现在使用场景、执行效率和语法结构上。 IN IN 是一种条件判断运算符,用于判断某个值是否存在于一个列表中。其基本语法...

    where 条件查询.sql

    where 条件查询.sql

Global site tag (gtag.js) - Google Analytics