在非空列上调用select query时,我们可以期望非空(int)值,代码:
public int getNum() {
int num = 0;
try {
num = jdbcTemplate.queryForObject("select num from mytable", Integer.class);
} catch (EmptyResultDataAccessException ignored) {
// ignored not found
}
return num;
}
Intellij警告说:
Unboxing of 'jdbcTemplate.queryForObject(SQL, Integer.class)' may produce 'NullPointerException'
如何通过标记值不为空来删除Intellij警告?
我不能将jdbcTemplate
方法标记为@NotNullabe
或使用@SuppressWarnings
从SQL返回的值总是不能为空的int值,我只是想指出IDE的值不能为空的DB定义
语句jdbcTemplate.queryForObject("select num from mytable", Integer.class);
返回Integer.class的实例,该实例可能是null
。由于您的变量num
是原始类型int
,因此在自动装箱期间将发生NullPointerException。
解决方案:
public int getNum() {
int num = 0;
try {
Integer i = jdbcTemplate.queryForObject("select num from mytable", Integer.class);
if(i != null) {
num = i;
}
} catch (EmptyResultDataAccessException ignored) {
// log or rethrow exception
}
return num;
}