java - 如何自定义jdbcTemplate.queryForMap()返回的map中值的类型?

标签 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);

提前致谢。

最佳答案

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

关于java - 如何自定义jdbcTemplate.queryForMap()返回的map中值的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49604840/

相关文章:

java - 知道我的 RecursiveTask 将在哪个 ForkJoinPool 上执行

mysql - 你如何在 Linux 上启动 MySQL 服务器?

java - Spring - jdbcTemplate 无法获取 Pair 对象

c# - 有没有办法在 SQL 数据库中搜索相似词(意思是不相同的词)?

java - 这个 JPQL 查询有什么问题?

MySQL-从两个表中正确获取用户及其订单数据

Spring JdbcTemplate更新Postgis地理专栏

java - Spring Boot : Transaction with two DB, 如果第二个数据库失败则回滚第一个数据库

java - 使用 Java(首选 JTS)以编程方式将英国国家网格(EPSG :7405), 坐标转换为纬度和经度坐标)

mysql - 如何将由值分隔的 mysql 列的值拆分为另一列?