如何使用 NamedParameterJDBCTemplate 中的字符串列表来获取结果

Posted

技术标签:

【中文标题】如何使用 NamedParameterJDBCTemplate 中的字符串列表来获取结果【英文标题】:How to use a list of string in NamedParameterJDBCTemplate to get results 【发布时间】: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提供了一种迭代并为我获取结果的方法?请指教。

【问题讨论】:

【参考方案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());

【讨论】:

以上是关于如何使用 NamedParameterJDBCTemplate 中的字符串列表来获取结果的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?