Как использовать список строк в NamedParameterJDBCTemplate для получения результатов - программирование
Подтвердить что ты не робот

Как использовать список строк в NamedParameterJDBCTemplate для получения результатов

Экспериментирование с 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<String> фамилий. Как я могу получить список участников со списком, который у меня есть? Я перебираю список имен и вызываю getActorsWithSameLastName() каждый раз или spring обеспечивает способ, в котором он выполняет итерацию, и получает результат для меня? Пожалуйста посоветуй.

4b9b3361

Ответ 1

Используйте пункт IN..

Как использовать предложение SELECT 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());

Ответ 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.toString(), parameters);