当前位置:首页软件开发Java → Java 解决oracle in 条件 不能大于1000的问题

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

时间:2020-08-12 17:44:32来源:互联网我要评论(0)

工具类: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()));
        }


相关文章

网友评论

热门评论

最新评论

发表评论 查看所有评论()

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)

关于万荚 | 联系方式 | 发展历程 | 版权声明 | 帮助(?) | 网站地图 | 友情链接

Copyright 2005-2020 16WJ.COM 〖万荚网〗 版权所有 桂ICP备18000060号 |

声明: 本站所有文章来自互联网 如有异议 请与本站联系