【问题标题】:How to use a list of string in NamedParameterJDBCTemplate to get results如何使用 NamedParameterJDBCTemplate 中的字符串列表来获取结果
【发布时间】:2013-01-04 04:49:02
【问题描述】:

使用 Spring-JDBC 进行实验。我使用this 作为参考。我正在尝试获取具有相同姓氏的演员列表。运行这段代码给了我想要的结果:

public List<String> getActorsWithSameLastName(String lastName,
            NamedParameterJdbcTemplate template) {
        String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME=:LASTNAME";
        Map<String, String> paramMap = new HashMap<String, String>();
        paramMap.put("LASTNAME", lastName);
        return template.queryForList(query, paramMap, String.class);
    }

我有一个姓氏List&lt;String&gt;。如何使用我拥有的列表获取演员列表?我是遍历姓氏列表并每次都调用getActorsWithSameLastName(),还是spring提供了一种迭代并为我获取结果的方法?请指教。

【问题讨论】:

    标签: java spring spring-jdbc


    【解决方案1】:

    你也可以使用MapSqlParameterSource

    String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME in (:LASTNAME)";
    Set<String> ids = ....;
    
    MapSqlParameterSource parameters = new MapSqlParameterSource();
    parameters.addValue("LASTNAME", ids);
    
    this.namedparameterJdbcTemplate.query(query, parameters);
    

    【讨论】:

    • 谢谢,这适用于我有一组多个字符串对象的情况
    • @Jayamohan query.toString(),当它已经是字符串格式时需要什么
    • 我认为不需要
    • 我已经删除了
    • 这应该是公认的答案。这是一种更好的方法。
    【解决方案2】:

    使用 IN 子句..

    How to use SELECT IN clause in JDBCTemplates?

    List<String> lastnames= new ArrayList<>();
    
    Map namedParameters = Collections.singletonMap("lastnamevalues", lastnames);
    
    StringBuffer recordQueryString = new StringBuffer();
    
    recordQueryString.append("select FIRSTNAME, LASTNAME from ACTORS where lastname in (:lastnamevalues)");
    
    List nameInvolvements = this.namedparameterJdbcTemplate.query(recordQueryString.toString(), namedParameters, new MyMapper());
    

    【讨论】:

      猜你喜欢
      • 2013-12-23
      • 2018-05-17
      • 1970-01-01
      • 2020-10-07
      • 2011-11-04
      • 1970-01-01
      • 2015-06-14
      • 2015-04-24
      • 2019-11-21
      相关资源
      最近更新 更多