jdbcTemplate nullable警告非空字段



在非空列上调用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;
}

最新更新