【发布时间】:2021-01-15 11:29:26
【问题描述】:
我最近遇到一个 Kotlin/Spring Boot 显示我不完全理解的行为。
让我们从一个非常像教科书般的纯 Kotlin 示例开始:
val map: Map<String, Any> = mapOf(
"name": "John",
"age": 21,
"job": null
)
上面的代码 sn-p 将导致编译器错误,这是可以理解的,提醒我们由于那个 ("job", null) 对,我们实际上分配了一个 Map
现在假设我们在 Spring Boot 中使用 Kotlin。我们还假设我们有一个名为 PERSON 的数据库(例如 MySQL)表,其中包含三列:
NAME of type varchar (not nullable)
AGE of type int (not nullable)
JOB of type varchar (nullable)
我们还假设我们的表中有一行的数据与我们之前提到的示例数据匹配:
'John', 21, NULL
使用 JdbcTemplate 实例,我们可以执行以下操作:
val map: Map<String, Any> = jdbcTemplate.queryForMap("SELECT * FROM PERSON WHERE NAME=John")
println(map)
对我来说,令人惊讶的结果是,最后的 sn-p 代码没有产生任何错误并打印出来
{NAME=John, AGE=21, JOB=null}
所以看起来我们成功地在 Map
这是故意的吗?其背后的逻辑是什么?
【问题讨论】:
标签: spring-boot kotlin jdbctemplate