Java 如果值为零,如何在prepared语句中设置null

Java 如果值为零,如何在prepared语句中设置null,java,Java,如果get值为零,有没有办法将这些值设置为null。??所有都是数字列是的,您需要使用方法。因此,在您的情况下,它将是: preparedStatement.setInt(1, pimDataVo.getItemFlashMessageId()); preparedStatement.setInt(2, pimDataVo.getErpImprintCodeId()); preparedStatement.setInt(3, pimDataVo.getPublisherCodeId()); pr

如果get值为零,有没有办法将这些值设置为null。??所有都是数字列

是的,您需要使用方法。因此,在您的情况下,它将是:

preparedStatement.setInt(1, pimDataVo.getItemFlashMessageId());
preparedStatement.setInt(2, pimDataVo.getErpImprintCodeId());
preparedStatement.setInt(3, pimDataVo.getPublisherCodeId());
preparedStatement.setInt(4, pimDataVo.getGlClassId());
对于其他值,使用类似的方法。您还可以编写一个HELPER类来为您执行此操作(这样您就不会重复很多代码)。大概是这样的:

if (pimDataVo.getItemFlashMessageId() != 0) {
    preparedStatement.setInt(1, pimDataVo.getItemFlashMessageId());
} else {
    // use setNull
    preparedStatement.setNull(1, java.sql.Types.INTEGER);
}
public static void setIntOrNull(PreparedStatement pstmt, int column, int value)
{
    if (value != 0) {
        pstmt.setInt(column, value);
    } else {
        pstmt.setNull(column, java.sql.Types.INTEGER);
    }
}
然后使用如下代码:

if (pimDataVo.getItemFlashMessageId() != 0) {
    preparedStatement.setInt(1, pimDataVo.getItemFlashMessageId());
} else {
    // use setNull
    preparedStatement.setNull(1, java.sql.Types.INTEGER);
}
public static void setIntOrNull(PreparedStatement pstmt, int column, int value)
{
    if (value != 0) {
        pstmt.setInt(column, value);
    } else {
        pstmt.setNull(column, java.sql.Types.INTEGER);
    }
}

是的,有办法。您是如何尝试实现此逻辑的?实现此逻辑时遇到了什么问题?我没有使用上述逻辑,而是将数据类型从int更改为Integer,如果值为空,则将其设置为null。请注意,如果检查和设置之间的
pimDataVo
-对象发生更改,则第一个示例代码包含并发错误。仅当您可以断言没有其他线程可以访问底层对象时,请使用此选项!(或者使用局部变量)我想知道,是否有某种preparedstatement包装器可以为我们这样做?