Это выглядит довольно хорошо для меня.Только что обнаружил логическую ошибку в этом блоке кода:
boolean firstValue = true;
for (int i=0; i < batchSize; i++) {
inClause.append('?');
if ( firstValue ) {
firstValue = false;
} else {
inClause.append(',');
}
}
Он не добавит ,
после первого элемента.И было бы ,
после последнего.Таким образом, вам не нужно беспокоиться об этом ,
здесь.Просто сделайте это так
for (int i=0; i < batchSize; i++) {
inClause.append('?, ');
}
Затем нарежьте последние два символа, как это,
PreparedStatement stmt = conn.prepareStatement(
"select id, name from users where id in (" +
inClause.substring(0, inClause.length()-2) + ')');