使用原始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 …
那么解决方法是什么?