2016-03-21 57 views
0
preparedStatement.setInt(1, pimDataVo.getItemFlashMessageId()); 
preparedStatement.setInt(2, pimDataVo.getErpImprintCodeId()); 
preparedStatement.setInt(3, pimDataVo.getPublisherCodeId()); 
preparedStatement.setInt(4, pimDataVo.getGlClassId()); 

如果get值为零,是否有任何方法将这些值设置为null。全部是号码列如何在准备好的语句中设置null如果值为零

+1

是的,有一种方法。你怎么试图实现这个逻辑?你遇到了什么问题实现这个逻辑? – rgettman

回答

4

是的,您需要使用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()); 
+0

而不是使用上面的逻辑,我已经将数据类型更改为整数从int,如果值为空设置为空。 – Gopinath

-2

当你告诉,你需要设置null如果值是0。在这种情况下,您可以轻松使用它。

preparedStatement.setInt(1, pimDataVo.getItemFlashMessageId() == 0? null : pimDataVo.getItemFlashMessageId()); 
+1

内部setInt()取消整数值,因此使用空整数值调用方法会导致空指针异常 – Regorsmitz

相关问题