There are several ways to do this. The clean way is to pass an array to the prepared statement. An alternative to Nick's answer is to pass a proper java.sql.Array
value:
PreparedStatement pstmt = connection.prepareStatement(
"DELETE FROM employee WHERE ename = ANY (?)");
String[] idList = new String[] {"abc", "bcd", "efg"};
Array ids = connection.createArray("varchar", idList);
pstmt.setArray(1, ids);
Another option is to use Postgres' string functions to convert the comma separated list to an array. That is probably the easiest way:
PreparedStatement pstmt = connection.prepareStatement(
"DELETE FROM employee WHERE ename = ANY (string_to_array(?, ','))");
psmt.setString(1, "abc,bcd,efg");
Note that you must not have spaces between the comma and the value! Those spaces will be part of the value that is stored in the array after string_to_array()
has done it's job so comparison would e.g. be ename = ' bcd'
which would fail if there is no leading space in the column ename
(which is highly likely)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…