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

2022-09-01 21:54:30

使用Spring-JDBC进行实验。我用这个作为参考。我试图获得具有相同姓氏的演员名单。运行此代码给了我所需的结果:

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);
    }

我有一个姓氏。如何获取包含我拥有的演员列表的演员列表?我是遍历姓氏列表并调用“每次”,还是 spring 提供了一种执行迭代并为我获取结果的方法?请指教。List<String>getActorsWithSameLastName()


答案 1

使用 IN 条款..

如何在 JDBCTemplate 中使用 SELECT IN 子句?

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());

答案 2

您还可以使用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);

推荐