使用原始 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 列的值null用于此特定记录,这是完全合理的。毕竟,我曾经使用过的每个 RDBMS 都允许数字(INT、LONG 等)字段为 NULLABLE ......
那么解决方法是什么?