java - MySQL TINYINT(1) 神秘地映射到 Java 类型 Integer

标签 java tomcat mysql-connector

我被困在一个庞大而古老的项目中(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 !这也是我要解决的一个大问题,但我认为两者是同一个原因。

最佳答案

来自 Connector/J documentation

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, or java.lang.Integer if not.

请注意:或者 java.lang.Integer 如果不是。检查属性 tinyInt1isBit 并可能更改它。

如果您已经这样做,请尝试重新启动 mysql 服务器。

关于java - MySQL TINYINT(1) 神秘地映射到 Java 类型 Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825156/

相关文章:

java - 未加权图的最短路径(最少节点)

java - 如何保存 boolean 值,以便我在返回此 Activity 时可以使用它们?

python - 在 Python 中构造一个 MySQL 更新查询,它只在字符串而不是数字周围加上引号

Eclipse 中的 java.lang.ClassNotFoundException : com. mysql.jdbc.Driver

c# - 带有 MySQL 和分布式事务的 TransactionScope

java - 在程序中绘制点

java - 使用 ECollections 进行扩展排序

Tomcat 不显示 JSF 异常

java - 在两个 WAR 之间共享应用程序上下文?

java - org.hibernate.exception.SQLGrammarException 不正确的 postgresql sql 查询