如何逃避使用PreparedStatement.setNull?

Fab*_*lva 1 java postgresql jdbc

我的数据库中有一个很大的表。其中一些字段可能为空。

我只想逃避使用:

PreparedStatement.setNull(index, Type.X)
Run Code Online (Sandbox Code Playgroud)

喜欢:

if(obj.getSomaData() == null){
  insertStmt.setNull(++i, java.sql.Types.VARCHAR);
}else{
  insertStmt.setString(++i, obj.getSomaData());
}
Run Code Online (Sandbox Code Playgroud)

有更好更好的方法吗?

PS:我正在使用PostgreSQL。

Mar*_*eel 5

的主要用例setNull是将原始类型设置为null,并处理一些驱动程序无法识别参数数据类型且需要明确指示的极端情况。

在大多数情况下,您应该可以使用setString(idx, null)(或setXXX其他对象类型的)对象。

引用JDBC 4.2第13.2.2.4节:

如果将Java null传递给采用Java对象的任何setter方法,则参数将设置为JDBC NULL

对于“无类型” null(例如使用setObject)有一个例外,建议为最大的可移植性而使用setNull或使用setObject类型参数,因为并非所有数据库都支持无类型信息。