`

Java 解决oracle in 条件 不能大于1000的问题

    博客分类:
  • Java
阅读更多
工具类:SqlInConditionStringUtil
其中:getOracleSQLIn方法适合单一SQL语句
      getOracleSQLIn方法适合嵌套SQL语句    
public static String getOracleSQLIn(List<String> ids, int count, String field) {
        count = Math.min(count, 1000);
        int len = ids.size();
        int size = len % count;
        if (size == 0) {
            size = len / count;
        } else {
            size = (len / count) + 1;
        }
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < size; i++) {
            int fromIndex = i * count;
            int toIndex = Math.min(fromIndex + count, len);
            String productId = StringUtils.defaultIfEmpty(StringUtils.join(ids.subList(fromIndex, toIndex), "','"), "");
            if (i != 0) {
                builder.append(" OR ");
            }
            builder.append(field).append(" IN ('").append(productId).append("')");
        }
        return StringUtils.defaultIfEmpty(builder.toString(), field + " IN ('')");
    }
    public static String getOracleSQLIn(List<String> ids, int count, String field, boolean flag) {
        count = Math.min(count, 1000);
        int len = ids.size();
        int size = len % count;
        if (size == 0) {
            size = len / count;
        } else {
            size = (len / count) + 1;
        }
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < size; i++) {
            int fromIndex = i * count;
            int toIndex = Math.min(fromIndex + count, len);
            String productId = StringUtils.defaultIfEmpty(StringUtils.join(ids.subList(fromIndex, toIndex), "','"), "");
            if (i != 0) {
                builder.append(" OR ");
            }
            if(flag == true)
            {
            	builder.append(field).append(" IN (").append(productId).append(")");
            }
        }
        
        return StringUtils.defaultIfEmpty(builder.toString(), field + " IN ('')");
    }


方法调用:
 /**
     * @Title: getInConditionValue
     * @Description: 获取oracle in 条件串
     * @param @param fieldName
     * @param @param value
     * @param @return
     * @return String
     * @throws
     */ 
    private String getInConditionValue(String fieldName, String value) {
        // 初始化返回值
        StringBuffer inConditionSql = new StringBuffer();
        if(value != null && !"".equalsIgnoreCase(value)) {
            // 登记机关查询条件
            inConditionSql.append("(");
            inConditionSql.append(SqlInConditionStringUtil.getOracleSQLIn(Arrays.asList(value.split(",")), 1000, fieldName));
            inConditionSql.append(")");
        }
        return inConditionSql.toString();
    }

查询条件添加:
if(marPlaConditionInfoBean.getIndCodeStr() != null 
                && !"".equalsIgnoreCase(marPlaConditionInfoBean.getIndCodeStr())) {
            // 添加行业代码查询条件
            sql.append(" AND ");
            sql.append(getInConditionValue("INDUSTRYCO", marPlaConditionInfoBean.getIndCodeStr()));
        }

分享到:
评论

相关推荐

    MLDN魔乐科技JAVA培训_Oracle课堂11_子查询.rar

    本资源"MLDN魔乐科技JAVA培训_Oracle课堂11_子查询.rar"聚焦于Java与Oracle数据库交互时的子查询使用技巧,对于提升开发者在实际项目中的能力有着显著帮助。 子查询,简单来说,就是在SQL查询语句中嵌套另一个查询...

    java_oracle_day05.pdf

    根据给定的文件信息,以下是对“java_oracle_day05.pdf”中涉及的关键知识点的详细解析: ### 约束条件(应用级别) #### 主键(Primary key,简称PK) 主键是一种特殊的唯一性约束,它确保了表中每一行记录的唯一...

    MLDN魔乐科技JAVA培训_Oracle课堂5_限定查询

    本教程"MLDN魔乐科技JAVA培训_Oracle课堂5_限定查询"聚焦于如何利用WHERE子句进行有效的数据筛选,以及在Oracle数据库环境下,掌握各种限定符的使用技巧。 WHERE子句是SQL查询语句中的核心部分,它允许我们根据指定...

    达内ORACLE练习一达内ORACLE练习一

    根据提供的标题、描述、标签及部分内容,我们可以提炼出与Oracle数据库相关的练习题目的知识点。以下是对这些知识点的详细解析: ### 1. 查询第30部门的所有员工 **SQL语句**: ```sql SELECT ename FROM emp WHERE...

    Oracle集合类型输出参数的PLSQL存储过程及其Java调用.docx

    ### Oracle集合类型输出参数的PL/SQL存储过程及其Java调用 #### 1. 引言 存储过程因其高效执行、事务处理能力以及安全性,在数据库应用程序中被广泛应用。特别是使用Oracle数据库时,PL/SQL(一种专为Oracle设计的...

    sql面试题java

    在SQL面试中,掌握一些关键的查询技巧是至关重要的,特别是对于Java开发者而言,因为数据库操作经常是应用程序的核心部分。...在实际面试中,理解并能优化这些查询将有助于展示你的SQL技能和解决问题的能力。

    AES加密时抛出java.security.InvalidKeyException: Illegal key size or default parameter

    2. **使用适当的加密模式**:选择合适的加密模式也是解决问题的关键之一。例如,使用CBC模式时,需要确保数据长度是16字节的倍数;而在使用CTR模式时,则不需要考虑数据长度的问题。 #### 五、总结 通过本文的介绍...

    JDBC操纵Oracle数据库中的BLOB字段

    总结而言,使用JDBC操纵Oracle数据库中的BLOB字段,无论是通过现代的`setBinaryStream`方法还是古老的分步写入策略,都能有效实现对多媒体数据的高效管理。开发者应根据具体的应用需求和环境选择最合适的操作方式。

    oracle常规练习

    - `view_emp2`: 包含`emp`表中薪资大于等于8000的所有记录的视图,并带有检查选项(只能对满足视图定义条件的数据进行插入或更新操作)。 #### 使用视图 ```sql SELECT * FROM view_emp; SELECT * FROM view_emp2;...

    Java基础题面试合集

    面向过程编程是一种以过程为中心的编程范式,强调通过函数或子程序来组织代码,以一步步解决问题。面向过程的优点在于性能较高,因为不涉及复杂的类结构和实例化过程,适合资源有限的环境,如单片机和嵌入式系统。...

    oracle 存储过程分页

    ### Oracle存储过程实现分页查询知识点详解 #### 一、背景与目的 在数据库操作中,分页查询是非常常见的需求之一。特别是在数据量较大的场景下,分页不仅可以提高查询效率,还能改善用户体验。Oracle数据库提供了...

    oracle经典sql案例

    - Oracle中使用“||”操作符进行字符串连接,和Java中使用“+”操作符的不同之处。 - DISTINCT关键字的使用,用于获取唯一不同的值。 2. 条件查询: - WHERE语句的使用来过滤结果集。 - 使用单引号定义字符串...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    是oracle权限最高的用户,登录时不能用normal。 2. system用户:超级用户,默认是SYSOPT(操作数据库的人),不过它也能以SYSDBA的权限登陆。拥有普通dba角色权限。 3. scott用户:是个演示用户,是让你学习Oracle用的...

    Oracle练习笔试大全

    //////////////////////////////////////////////////having函数对于group by函数的过滤 不能用where////////////////////////////////////// 58、select deptno, avg(sal) from emp group by deptno having avg...

    oracle笔记

    `表示部门编号为10且薪水大于1000的员工。 12. **模糊查询**:`LIKE`关键字支持模糊匹配,如`LIKE '%ALL%'`匹配包含"ALL"的名称,`LIKE '_A%'`匹配第二个字母为"A"的名称。 13. **转义字符**:在`LIKE`中,可以...

    Oracle11g设计与开发教程课后习题

    5. SGA(System Global Area):包括数据库高速缓存、重做日志缓冲区、共享池、Java池、大池等,是Oracle数据库运行时的内存区域。 6. 表空间管理:用户表空间可以被设置为脱机状态,CREATE TABLESPACE语句中的...

    素数_java_

    这个简单的Java程序展示了如何利用基本的数学知识和编程逻辑来解决问题。在实际项目中,这样的功能可能会被封装在一个类中,或者作为一个更复杂的系统的一部分。无论何时,理解并掌握编程语言的基础和算法原理都是至...

    oracle实验报告

    在命令的where子句中给出1=2,表示条件不可能成立,因而只能复制表结构,而不能复制任何数据到新表中去。另外,还可以复制一个表的部分列定义或部分列定义及其数据。 三、 Oracle数据库数据查询 1、单表查询 2、多...

Global site tag (gtag.js) - Google Analytics