解决jdbcTemplate和jpa查询TINYINT(1)返回BOOLEAN的问题
来源:互联网 发布:linux下nslookup 编辑:程序博客网 时间:2024/05/16 14:01
问题背景
在项目中使用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
,问题解决
- 解决jdbcTemplate和jpa查询TINYINT(1)返回BOOLEAN的问题
- 关于mysql tinyInt 长度为1 查询返回boolean类型的数据
- JdbcTempate处理mysql TINYINT返回Boolean的问题
- 关于MySQL的boolean和tinyint(1)
- 关于 MySQL 的 boolean 和 tinyint(1)
- 关于 MySQL 的 boolean 和 tinyint(1)
- mysql的boolean和tinyint(1)
- MySQL boolean tinyint(1)
- mysql tinyint(1)与boolean
- mysql tinyInt1isBit 控制jdbc是否把tinyint(1) 类型当成boolean返回。
- tinyint(1)和tinyint(4)的区别和用法
- boolean type is tinyint(1) in MySQL
- MySQL中 boolean 与tinyint(1)
- JDBC 执行查询时,mysql中TINYINT ,boolean
- jdbcTemplate 实现查询返回list
- CakePHP: tinyint(1)类型引入的问题
- JdbcTemplate的保存和查询方法
- Mybatis中tinyint(1)数据自动转化为boolean处理
- Spring Boot Tomcat配置
- android 百度地图选择地址并再通过坐标获取地址
- JAVA-简单Swing图形化界面
- homework001
- js控制键盘按键(回车、空格)
- 解决jdbcTemplate和jpa查询TINYINT(1)返回BOOLEAN的问题
- MySQL-索引和优化
- rsync脚本优化,以及遇到的些问题
- HDU-1004-Let the Balloon Rise
- C#多线程学习(四) 多线程的自动管理(线程池)
- 自己用的unity学习笔记(二)——unity进阶
- 整除问题
- Win7 U盘安装Ubuntu16.04 双系统详细教程
- 一条贪吃蛇的自我修养——从手动皮皮蛇到智能皮皮蛇