zoukankan      html  css  js  c++  java
  • String.format VS. StrSubstitutor VS. NamedParameterJdbcTemplate

      在Java中,想要用一个字符串模块根据参数的不同来产生不同的字符串,主要有以下两种办法:

      Java String.format()


         在JDK1.5中,String类新增了一个很有用的静态方法String.format().
         format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串;
         format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。
         在格式化字符串中,大部分参数都比较符合C风格中的printf()函数,但是需要注意的是,在Java中,有一个可选的argument_index的十进制的参数,用来表明参数在参数列表中的位置。第一个由“1$”引用,第二个由“2$”引用,以此类推。例如:

    System.out.println(String.format("%s,%s,%1$s,%2$s,%1$s", "a", "b"));   
    
    //输出:a,b,a,b,a

      Commons-lang StrSubstitutor


         在Commons-lang中,给我们提供一个新的类叫做StrSubstitutor,专门用来做一些字符串替换填充的事情。例如:

    Map valuesMap = HashMap();
    valuesMap.put("animal", "quick brown fox");
    valuesMap.put("target", "lazy dog");
    String templateString = "The ${animal} jumped over the ${target}.";
    StrSubstitutor sub = new StrSubstitutor(valuesMap);
    String resolvedString = sub.replace(templateString);
    
    //输出:The quick brown fox jumped over the lazy dog.

      联想到的NamedParameterJdbcTemplate


      这使我想起了曾经在使用JdbcTemplate的时候,SQL语句的参数都是用“?”作为占位符,严重依赖于顺序。为了解决这个问题,我们可以选择使用Spring中的NamedParameterJdbcTemplate。这样我们就可以使用“:”跟上变量名而不用依赖位置的先后顺序了,而且可读性也大大提高了。例如:

    //insert with named parameter
    public void insertNamedParameter(Customer customer){
        String sql ="INSERT INTO CUSTOMER (CUST_ID, NAME, AGE) VALUES (:custId, :name, :age)";
        Map<String, Object]]> parameters =new HashMap<String, Object]]>();
        parameters.put("custId", customer.getCustId());
        parameters.put("name", customer.getName());
        parameters.put("age", customer.getAge());
        getSimpleJdbcTemplate().update(sql, parameters);
    }

      

  • 相关阅读:
    2.2.3 线程中断
    java枚举 用于声明持久化常量 和volley 请求头
    java获取昨天的日期
    使用LocalBroadcastManager
    大端模式与小端模式
    Android更新主线程UI的两种方式handler与runOnUiThread()
    android dialog圆角显示及解决出现的黑色棱角.(友情提示)
    html5中的新标签
    html中的title和alt
    Android开发之蓝牙Socket
  • 原文地址:https://www.cnblogs.com/penghongwei/p/3442067.html
Copyright © 2011-2022 走看看