我被困在一个庞大而古老的项目中(j2sdk 1.4.2、Tomcat 4.1.29、MySQL 5.0.51a),我需要为工作安装一个新的开发环境。
我有一个 MySQL 数据库,我的 Tomcat 可以访问它,它处理来 self 的 Java 应用程序的请求。在该数据库中,一些表包含我的应用程序所需的 boolean 值。
因此,在应用程序中,创建一个准备好的语句,向其中添加参数,然后启动请求并将此请求的结果集存储在自定义 SQLResult
中。对象(这是我公司制作的自定义框架的一部分,对此无能为力 - 尽管它与经典的 java.sql.ResultSet
对象非常相似)。
问题是:当 java 应用程序请求一些数据时,这些数据存储在数据库中,格式为 TINYINT(1)
。 ,这些数据作为 java.lang.Integer
返回给 java 应用程序, 不是 java.lang.Boolean
,正如我所愿。
注意:Tomcat服务器使用的JDBC连接器版本为mysql-connector-java-3.0.11-stable。
到目前为止我测试了什么(没有结果):
- 升级/降级 MySQL 连接器
- 已添加
tinyInt1isBit=<true/1>
作为我的连接字符串的结尾 - 升级/降级 MySQL 数据库,始终使用源代码中提供的相同数据转储
- 还有很多我什至不记得的东西,因为我测试了太多东西:-/
现在我很确定问题出在 Tomcat 服务器使用的 MySQL JDBC 连接器上。因此,当我更改连接器的版本时,其他任何东西都不再起作用(意思是,甚至无法连接用户)。
有什么想法吗?
编辑: 我忘了准确地说,在 java 应用程序的另一部分中,请求存储为 DECIMAL
的数据。返回为 java.lang.String
!这也是我要解决的一个大问题,但我认为两者是同一个原因。
最佳答案
MySQL Type Name: TINYINT
Return value of GetColumnClassName: TINYINT
Returned as Java Class:
java.lang.Boolean
if the configuration property tinyInt1isBit is set to true (the default) and the storage size is 1, orjava.lang.Integer
if not.
请注意:或者 java.lang.Integer
如果不是。检查属性 tinyInt1isBit
并可能更改它。
如果您已经这样做,请尝试重新启动 mysql 服务器。
关于java - MySQL TINYINT(1) 神秘地映射到 Java 类型 Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825156/