【问题标题】:How to custom the type of value in the map returned by jdbcTemplate.queryForMap()?如何自定义 jdbcTemplate.queryForMap() 返回的 map 中值的类型?
【发布时间】:2018-04-02 14:50:12
【问题描述】:

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

提前致谢。

【问题讨论】:

标签: java mysql jdbctemplate


【解决方案1】:

MySQL 使用tinyint(1) 作为boolean 的别名。所以mysql的驱动会把tinyint(1)当作boolean的值。您可以通过将 tinyInt1isBit=false 添加到您的连接 url 来禁用这个未来(如上面链接中的描述)。之后,您将获得tinyint(1) 列的Integer。但我建议遵循别名,并将您的表定义为tinyinttinyint(4) 以识别它不是boolean

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-03
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多