资讯专栏INFORMATION COLUMN

解决jdbcTemplate和jpa查询TINYINT(1)返回BOOLEAN的问题

Y3G / 2453人阅读

摘要:问题背景在项目中使用和时,发现当对类型的数据进行查询时,会被当作类型返回。解决查了不少文档,都是对或者的查询方法进行扩展,在返回的数据进行匹配时,判断如果是类型,就作特殊处理。

问题背景

在项目中使用jpa和jdbcTemplate时,发现当对Tinyint类型的数据进行查询时,会被当作boolean类型返回。
而在项目中,我们使用了大量的Tinyint来做枚举值,被当作布尔类型返回后,造成了程序的异常。

status TINYINT(1)  NOT NULL DEFAULT 0;
分析

在mysql的官网 numeric-type-overview 这篇文档里面写到

BOOL, BOOLEAN

These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true

也就是说,在mysql中对 TINYINT(1)BOOLEAN 的处理是一样的。

解决

查了不少文档,都是对 jpa 或者 jdbcTemplate的查询方法进行扩展,在返回的数据进行Mapper匹配时,判断如果是TINYINT类型,就作特殊处理。
虽然这样能解决问题,但像这样普遍的问题,我相信mysql肯定有过考虑,然后在mysql的官方文档里面发现了这个配置

The data type returned for TINYINT(1) columns when tinyInt1isBit=true (the default) can be switched between Types.BOOLEAN and Types.BIT using the new configuration property transformedBitIsBoolean

也就是说,当你对mysql Connector设置了tinyInt1isBit=true后,它会将TINYINT(1)当作BIT也就是
Types.BOOLEAN来处理。而且这个设置是默认开启的。那是不是设置为false后反过来呢?

于是在jdbc url后面添加了?tinyInt1isBit=true,问题解决

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70878.html

相关文章

  • 慕课网_《轻松愉快之玩转SpringData》学习总结

    摘要:时间年月日星期一说明本文部分内容均来自慕课网。慕课网教学示例源码个人学习源码第一章课程介绍课程介绍什么是主旨提供一个熟悉的一致的,基于框架的数据访问框架。 时间:2017年04月24日星期一说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://gith...

    skinner 评论0 收藏0
  • 关于 Spring JdbcTemplate 一些总结

    摘要:关于的一些总结一个小问题的思考起因当前项目中一直使用的都是,即这种用法考虑到确实有一定的局限性,在部分查询中使用到了进行复杂查询操作由于本人年也曾使用过,古语温故而知新,所以做此总结梳理。 关于 Spring JdbcTemplate 的一些总结 一个小问题的思考 起因 当前项目中一直使用的都是 SpringData JPA ,即 public interface UserReposi...

    Pikachu 评论0 收藏0
  • 谈谈Spring-Data那些事儿

    摘要:什么是呢全称,是提出的一个对象持久化规范,各应用服务器自主选择具体实现。仅仅只是一个规范,而不是产品使用本身是不能做到持久化的。只要提供了持久化类与表的映射关系,框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。 我们在进行事务处理往往需要和数据库进行交互,这其中有关系型数据库(MySql,Sql Server,Oracle)或者是非关系型数据库(Redis,Hadhoop)...

    chinafgj 评论0 收藏0
  • 谈谈Spring-Data那些事儿

    摘要:什么是呢全称,是提出的一个对象持久化规范,各应用服务器自主选择具体实现。仅仅只是一个规范,而不是产品使用本身是不能做到持久化的。只要提供了持久化类与表的映射关系,框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。 我们在进行事务处理往往需要和数据库进行交互,这其中有关系型数据库(MySql,Sql Server,Oracle)或者是非关系型数据库(Redis,Hadhoop)...

    charles_paul 评论0 收藏0

发表评论

0条评论

Y3G

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<