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

发布时间:2024年01月23日

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

      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')

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

文章来源:https://blog.csdn.net/chengmin123456789/article/details/135763299
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。