23

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

List<String>家系の名前があります。私が持っているリストで俳優のリストを取得するにはどうすればよいですか?家系の名前のリストを繰り返してgetActorsWithSameLastName()毎回呼び出すのですか、それともSpringが繰り返しを実行して結果を取得する方法を提供するのですか?ご意見をお聞かせください。

4

2 に答える 2

32

IN句を使用します。

JDBCTemplatesでSELECTIN句を使用するにはどうすればよいですか?

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-01-21T06:40:58.593 に答える
19

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);
于 2013-02-05T01:24:36.030 に答える