java – JDBC PreparedStatement中“null primitives”的解决方法?

参见英文答案 > JDBC:Inserting null to Integer column 2个

使用原始JDBC时,您可以参数化PreparedStatement,如下所示:

PreparedStatement statement = connection.prepareStatement(someSQLString);
String someString = getSomeString();
Integer int = getSomeInteger();
statement.setString(1, someString);
statement.setLong(2, 5L);
statement.setInt(3, int);

...

在这里,如果someString为null,那很好 – 字符串可以为空.但是如果getSomeInteger()返回null,我们就会遇到问题.

PreparedStatement#setInt(int,int)将原始int设置为值,因此不能为null.

但是,我可能希望上面第3列的值对于此特定记录为空是完全合理的.毕竟,我曾经使用的每个RDBMS都允许数字(INT,LONG等)字段为NULLABLE …

那么解决方法是什么?