Summary_采用预编译查询数据SQL

本文探讨了如何使用StringBuffer动态构建SQL查询语句,并通过参数化方式避免SQL注入风险,展示了条件判断在SQL拼接中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        StringBuffer param = new StringBuffer();

        StringBuffer sb=new StringBuffer("");
        sb.append(" SELECT");
        sb.append(" ID");
        sb.append(",NAME");
        sb.append(",FN_HREF");
        sb.append(",FN_TYPE");
        sb.append(",ORDER_NUM");
        sb.append(" FROM");
        sb.append(" CXTJ_DEFINE");
        sb.append(" WHERE 1=1 ");
        sb.append(" AND STATUS = 1");
        sb.append(" AND ID IN (");
        sb.append(" SELECT");
        sb.append(" DATA_ID");
        sb.append(" FROM");
        sb.append(" YWZNGK_AUTHORIZE_RES_DATA");
        sb.append(" WHERE 1=1 ");

        if(StringUtils.isNotEmpty(oruIdStr)){
            sb.append(" AND ORU_ID IN (");
            sb.append(oruIdStr.replaceAll("[^,]+", "?"));
            sb.append(")");

            param.append("#").append(oruIdStr.replaceAll(",", "#"));
        }

        sb.append(" AND DATA_TYPE = 'S'");
        sb.append(" )");

        if(StringUtils.isNotEmpty(statisticsType)){
            sb.append(" AND FN_TYPE=?");
            param.append("#").append(statisticsType);
        }

        if(StringUtils.isNotEmpty(statisticsName)){
            sb.append(" AND FN_NAME LIKE ?");
            param.append("#%").append(statisticsName).append("%");
        }

        Object[] paramArr;
        if(param.length()>0){
            paramArr = param.deleteCharAt(0).toString().split("#");
        }else {
            paramArr =null;
        }

        List<Map<String,Object>> list=this.sqlQueryForList(sb.toString(),paramArr);
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值