Строковые утилиты не работают должным образом
У меня есть список строк, который возвращается из запроса в списке А.
Я пытаюсь использовать String Utils.join, чтобы объединить значения в списке в строку, разделенную запятой и в кавычках. Но это не работает, как ожидалось.
Значения в abcList - [abc, cde, fgh]
abcList.addAll(jdbcTemplate.queryForList(abcSql, String.class));
String abc= StringUtils.join(abcList, "','");
abc = "'" +abc+ "'";
Ожидаемый результат - 'abc', 'cde', 'fgh'
Фактический результат - 'abc, cde, fgh'
Я не уверен, что я делаю здесь неправильно, потому что я хочу передать значения из строки abc в запрос с условием "IN".
2 ответа
В качестве альтернативы вы также можете использовать stream.Collectors.joining
List<String> myList = Arrays.asList("abc","def","ghi");
String joined = myList.stream().collect(Collectors.joining("','", "'", "'"));
System.out.println(joined);
Если вы используете Java 8, вы можете использовать нативный метод для соединения строк.
List<String> list = <get a list of strings somehow>;
String joinedString = String.join("','", list);
Так же, как подсказка для запросов JDBC... вы должны использовать именованные параметры для вставки значений в ваш запрос вместо того, чтобы вручную создавать строку запроса.
Посмотрите этот ТАК пост для примера.