Durante meu trabalho com bancos de dados, percebi que escrevo strings de consulta e, nessas strings, tenho que colocar várias restrições na cláusula where de uma lista / array / coleção. Deve ser assim:
select * from customer
where customer.id in (34, 26, ..., 2);
Você pode simplificar isso, reduzindo isso à questão de que você tem uma coleção de strings e deseja criar uma lista separada por vírgulas dessas strings em apenas uma string.
Minha abordagem que usei até agora é mais ou menos assim:
String result = "";
boolean first = true;
for(String string : collectionOfStrings) {
if(first) {
result+=string;
first=false;
} else {
result+=","+string;
}
}
Mas isso é como você pode ver muito feio. Você não pode ver o que acontece lá à primeira vista, especialmente quando as strings construídas (como toda consulta SQL) estão ficando complicadas.
Qual é o seu jeito (mais) elegante?