是的,您需要使用setNull
方法。因此,在你的情况下,它会是:
if (pimDataVo.getItemFlashMessageId() != 0) {
preparedStatement.setInt(1, pimDataVo.getItemFlashMessageId());
} else {
// use setNull
preparedStatement.setNull(1, java.sql.Types.INTEGER);
}
而你对其他值使用类似的方法。如果你喜欢,你也可以编写一个HELPER CLASS来执行此操作(所以你不要重复很多代码)。事情是这样的:
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);
}
}
然后你使用这样的代码:
Helper.setIntOrNull(preparedStatement, 1, pimDataVo.getItemFlashMessageId());
Helper.setIntOrNull(preparedStatement, 2, pimDataVo.getErpImprintCodeId());
Helper.setIntOrNull(preparedStatement, 3, pimDataVo.getPublisherCodeId());
Helper.setIntOrNull(preparedStatement, 4, pimDataVo.getGlClassId());
是的,有一种方法。你怎么试图实现这个逻辑?你遇到了什么问题实现这个逻辑? – rgettman