Строковые утилиты не работают должным образом

У меня есть список строк, который возвращается из запроса в списке А.

Я пытаюсь использовать 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);

Смотрите String.join Javadoc

Так же, как подсказка для запросов JDBC... вы должны использовать именованные параметры для вставки значений в ваш запрос вместо того, чтобы вручную создавать строку запроса.

Посмотрите этот ТАК пост для примера.

Другие вопросы по тегам