JAVA MessageFormat 单引号连占位符引起占位符失效解决方案

请看之前引起占位符失效的代码

      List<String> gg2dmlist=new ArrayList<>();
      gg2dmlist.add("S");
      gg2dmlist.add("M");
      StringBuffer initemBuffer=new StringBuffer();
      for(String gg2dm:gg2dmlist){
            initemBuffer.append("'"+gg2dm+"',");
      }
      String initems=initemBuffer.toString(),inSql=MessageFormat.format(
                "select spdm from spkcb where ckdm='{0}' and sl>0 and gg2dm in ({1})",
                "SD001",initems.substring(0, initems.length()-1));
      System.out.println(inSql);

运行结果:  

select spdm from spkcb where ckdm={0} and sl>0 and gg2dm in ('S','M')

 其中 ckdm={0},本意是想ckdm='SD001',结果却失效

修复后的代码为:

        List<String> gg2dmlist = new ArrayList<>();
        gg2dmlist.add("S");
        gg2dmlist.add("M");
        StringBuffer initemBuffer = new StringBuffer();
        for (String gg2dm : gg2dmlist) {
            initemBuffer.append("'" + gg2dm + "',");
        }
        String initems = initemBuffer.toString(), inSql = MessageFormat.format(
                "select spdm from spkcb where ckdm=''{0}'' and sl>0 and gg2dm in ({1})",
                "SD001", initems.substring(0, initems.length() - 1));
        System.out.println(inSql);

 运行结果:

select spdm from spkcb where ckdm='SD001' and sl>0 and gg2dm in ('S','M')

 仅仅需要将占位符前后的单引号前再加一个单引号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值