假设我有一个表,其中包含一个名为 status 的列,其类型为 tinyint(1)
,并且我使用以下 jdbc 查询从数据库中获取特定行,但现在 queryForMap ()
方法会自动将 tinyint(1)
状态字段转换为 boolean
类型,但实际上我不仅要使用这个字段保存 0 或 1(例如也存储值 2),所以我希望这种类型的状态是 byte
。我怎样才能实现这个目标?
Map<String, Object> task = jdbcTemplate
.queryForMap("select * from task where id = ? and deleted = 0 for update", taskId);
提前致谢。
最佳答案
MySQL 使用 tinyint(1)
作为 boolean
的别名。所以 mysql 的驱动程序会将 tinyint(1)
视为 boolean
值。您可以通过将 tinyInt1isBit=false
添加到您的连接 url(如上面链接中的描述)来禁用此 future 。之后,您将获得 tinyint(1)
列的 Integer
。但我建议遵守别名,并将您的表定义为 tinyint
或 tinyint(4)
以识别它不是 boolean
。
关于java - 如何自定义jdbcTemplate.queryForMap()返回的map中值的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49604840/