将 Kotlin 和 Spring 5 用于一些简单的项目。我想使用 id 从数据库中获取单个记录queryForObject
。我的查询是“按 id 进行简单选择”:
jdbc.queryForObject("select id, name from example where id = ?", id)
{ rs: ResultSet, _: Int -> NamedEnt(rs.getLong("id"), rs.getString("name") }
在JdbcOperationsExtensions.kt
其中声明返回可为空的类型T?
:
fun <T : Any> JdbcOperations.queryForObject(sql: String, vararg args: Any, function: (ResultSet, Int) -> T): T? =
queryForObject(sql, RowMapper { resultSet, i -> function(resultSet, i) }, *args)
在实践中,当我传递不存在的标识符时,我面临:
org.springframework.dao.EmptyResultDataAccessException:结果大小不正确:预期为 1,实际为 0
那我不明白返回可为空类型的意义何在?您要么收到一条记录,要么收到异常。还是我错过了什么?