Uri*_*Uri 5 java jdbc resultset
当使用JDBC并通过结果集访问基本类型时,是否有一种更优雅的方式来处理null/0而不是以下:
int myInt = rs.getInt(columnNumber)
if(rs.wasNull())?
{
// Treat as null
} else
{
// Treat as 0
}
Run Code Online (Sandbox Code Playgroud)
每当我看到这种代码时,我个人都会畏缩.我没有看到为什么没有定义ResultSet来返回盒装的整数类型(可能除了性能)或者至少提供两者.如果有人能说服我当前的API设计很棒,那么奖励积分:)
我的个人解决方案是编写一个返回Integer的包装器(我更关心客户端代码的优雅而不是性能),但我想知道我是否错过了更好的方法来执行此操作.
只是为了澄清一下,对于这段代码困扰我的不是长度,而是它在后续调用之间创建状态依赖性的事实,以及看似简单的getter实际上在同一行中有副作用的事实.
JDBC API是为性能而设计的.请记住,它可以追溯到Java 1.1,当对象的大量转换是JVM杀手时(直到Java 1.2+中的Hotspot JVM才能放松这种限制).使用盒装类型会破坏当时大批量应用程序的性能.
现在,由于向后兼容性,它无法更改.所以不,它不再理想,但解决方法是一个非常小的事情.
如果你想避免你提到代码的类型,你可以随时使用getObject(),而不是getInt(),它将返回的亚型之一的目标java.lang.Number,很可能Integer还是BigInteger取决于特定的SQL类型.
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |