如何自定义jdbcTemplate.queryForMap()返回的映射中的值类型?

时间:2018-04-02 03:13:44

标签: java mysql jdbctemplate

假设我有一个名为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);

提前致谢。

1 个答案:

答案 0 :(得分:0)

MySQL使用tinyint(1)作为boolean的别名。所以mysql的驱动程序会将tinyint(1)视为boolean值。您可以通过将tinyInt1isBit=false添加到您的连接网址来禁用此未来(如上面链接中的说明)。之后,您将获得Integer列的tinyint(1)。但我建议服从别名,并将您的表定义为tinyinttinyint(4),以确定它不是boolean