`

mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突

 
阅读更多

mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突

 

实体Bean

public class Broke {
	/**
	 * brokeid 
	 */
	BigInteger brokeid;
	/**
	 * 节点id 与 节点id为多对一的关系
	 */
	String nodeid;
	/**
	 * brokeip
	 */
	String brokeip;
	/**
	 * 删除标记   0--notdelete   1--delete  (0 is default)
	 */
	int deleteflag = 0;
}

 brokeid为BigInteger类型, 在mysql数据库中brokeid同样也为BigInteger类型,看起来如果在数据库中查找相关Broke实体应该没有什么问题,然而在查找出resultSet结果进行反射时,却抛出了argument type mismatch的错误信息。。下面看反射代码。。

public static <T> List<T> getObjectsList(ResultSet rs, Class<T> k)
			throws SQLException {
		List<T> bl = new ArrayList<T>();
		if (rs != null) {
			while (rs.next()) {
				T o = null;
				try {
					o = k.newInstance();
					for (Method m : k.getDeclaredMethods()) {
						String name = m.getName();
						if (name.startsWith("set")) {
//							System.out.println(rs.getObject(name.substring(3)).getClass().getName());
							m.invoke(o, rs.getObject(name.substring(3)));
						}
					}
					bl.add(o);
				} catch (InstantiationException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					e.printStackTrace();
				}
			}
			return bl;
		}
		return null;
	}

 当程序运行时,将反射执行到Brokeid时,就会在红色程序部分抛出argument type mismatch的异常信息,打印出程序中注释掉的那句输出语句时,便可以判断出,此时,从resultSet对象中取出的object对象为Long类型。之后,将Broke实体中brokeid的数据类型改为Long即可。

  在测试之后,发现改为Long类型之后,并不影响Broke对象的插入和其他一些相关操作。  而原先的BigInteger数据类型在添加实体的时候是可以的,但是在rs.getObject时,就会发生类型不匹配的错误。。

 

0
0
分享到:
评论
5 楼 J2EE大鸟 2013-09-29  
xiangkui 写道
我也碰到了同样的问题,想让ResultSet结果集中对象反射成实体Bean,但mysql 的BigInteger类型 查出来确是Long类型,不懂。。。

嗯,很有可能在取到resultset结果集时,mysql驱动jar包,已经将其默认转化为了long类型,所以反射时出现这个问题。 有可能mysql认为在mysql数据库中bigint就为long型,因为在mysql中是没有long型的。
4 楼 xiangkui 2013-09-29  
我也碰到了同样的问题,想让ResultSet结果集中对象反射成实体Bean,但mysql 的BigInteger类型 查出来确是Long类型,不懂。。。
3 楼 J2EE大鸟 2012-09-11  
wintersun 写道
请问mysql数据版本是多少,jdbc driver是什么,以及其版本?

我们的数据库是部署在linux上面的,为最新版:MySQL-client-5.5.25a-1.linux2.6.x86_64  
jdbc driver由maven管理,依赖为
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.20</version>
   <scope>runtime</scope>
</dependency>
2 楼 wintersun 2012-09-11  
请问mysql数据版本是多少,jdbc driver是什么,以及其版本?
1 楼 J2EE大鸟 2012-07-10  

相关推荐

    Java数据类型和MySql数据类型对应一览

    在本文中,我们将对 Java 数据类型和 MySql 数据类型进行对应一览,帮助开发者更好地理解和使用这两种类型。 字符串类型 在 Java 中,字符串类型对应的是 java.lang.String 类型。在 MySql 中,字符串类型对应的是...

    Java数据类型和MySql数据类型对应表

    Java 数据类型和 MySql 数据类型对应表 ...了解 Java 数据类型和 MySql 数据类型的对应关系是非常重要的,这可以帮助我们正确地将 Java 对象映射到 MySql 数据库表中,并确保数据的一致性和正确性。

    MySql于Java数据类型对应列表

    本文将详细介绍MySQL中的各种数据类型及其在Java中的对应类型,并解释这些类型的具体含义以及它们在实际应用中的作用。 #### 数据类型对照表解析 ##### 1. VARCHAR (可变长度字符串) **显示长度:** L+N **数据库...

    sqlserver数据库类型对应Java中的数据类型

    SQL Server 数据库类型对应 Java 中的数据类型 SQL Server 是一个关系数据库管理系统,Java 是一个广泛使用的编程语言。在 Java 中,对数据库的操作需要通过 JDBC(Java Database Connectivity)来实现,而在 JDBC ...

    深入浅出MySQL数据库开发、优化与管理维护.doc

    在本篇中,我们将学习 MySQL 数据库开发的基础知识,包括数据类型、数据架构设计、索引设计、查询优化和事务处理等。 数据类型 MySQL 中有多种数据类型,包括整数类型、浮点数类型、字符串类型、日期时间类型等。...

    MySQL数据库习题和实践答案.rar

    在MySQL中,数据库是存储数据的逻辑容器,而表则是数据的物理结构。创建表时,需要定义列名、数据类型和约束条件,如主键、外键、唯一性等。 3. **数据类型**: MySQL支持多种数据类型,如整数(INT、BIGINT)、...

    mysql数据库(数据类型说明).txt

    ### MySQL 数据库字段数据类型详解 #### 整型数据类型 **Tinyint** - **描述**:Tinyint 是一种非常小的整数类型,支持有符号和无符号两种形式。 - **有符号范围**:-128 至 127。 - **无符号范围**:0 至 255。 ...

    Java数据类型与各数据库类型映射一览表

    该表格详细说明了每种数据类型在不同数据库管理系统中的映射关系,并提供了相关的 Java 对象类型和数据库类型信息。 在本表格中,我们可以看到不同的数据类型,如 BIGINT、BINARY、BIT、BLOB、CHAR、CLOB、DATE、...

    Mysql、orcale 中的数据类型与java中的数据类型对应表.pdf

    理解 MySQL 和 Oracle 中的数据类型与 Java 中的数据类型对应关系对于数据库应用开发非常重要。本文详细介绍了 Oracle 中的 Number 和 Date 类型与 Java 中的数据类型对应关系,并对 MySQL 中的数据类型也进行了简单...

    MySQL数据库的web开发

    在互联网时代,Web开发与数据库技术紧密相连,其中MySQL数据库因开源免费、功能强大和性能稳定而广泛应用于Web开发中。本文将详细介绍MySQL数据库在Web开发中的应用,包括基础概念、操作、常用函数、SQL语句以及架构...

    Mysql数据库设计.pdf

    在MySQL中,数据类型的选择至关重要,因为它直接影响到数据的存储空间、处理效率以及查询性能。以下是关于MySQL数据库设计的一些关键知识点: 1. **字符串转义序列**: 在MySQL中,字符串可能包含特殊字符,如NUL...

    mysql数据库学习资料

    MySQL数据库是世界上最受欢迎的关系型数据库管理系统之一,广泛应用于各种规模的企业和项目中。这份学习资料主要涵盖了MySQL的基础操作,包括数据库的管理、表的操作以及数据的增删改查。 首先,我们讨论一下如何...

    MySQL数据库技巧MySQL优化之数据类型的使用

    MySQL数据库的优化是一个重要的主题,尤其在大数据量和高并发的场景下,合理选择数据类型对于提升查询效率和节省存储空间至关重要。以下是一些关于MySQL数据类型选择和优化的要点: 1. **选择最合适的最小数据类型*...

    mysql数据库转瀚高数据库所需要的函数列表

    1、mysql数据库转国产化瀚高数据库; 2、有些函数在瀚高数据库中不存在,需要添加自定义函数。

    MySQL数据库学习笔记.pdf

    数值型数据类型包括整数和浮点数,如TINYINT、SMALLINT、INTEGER、BIGINT以及FLOAT和DECIMAL。DECIMAL类型的精度和尺度允许我们定义精确的小数位数,如DECIMAL(5,2)表示最多5位数字,其中2位是小数。浮点类型中,...

    JDBC数据类型与数据库字段对应表——mysql篇

    JDBC数据类型与数据库字段对应表——mysql篇 数值型 整型 JDBC tinyint java.lang.Integer smallint mediumint java.lang.Long int bigint java.math.BigInteger

    MySQL数据库笔记.doc

    MySQL 数据库笔记是一个详细的数据库笔记,涵盖了数据库的基本概念、CRUD 操作、安装和配置、数据类型等内容。下面是笔记中的一些重要知识点: 数据库的基本概念 * 数据库是一个存储和管理数据的系统,它提供了一...

    MySQL数据库:表的字段类型.pptx

    作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。 表的字段类型 数值类型 表的字段类型 日期和时间类型 表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。 每个时间类型有...

    三大数据库的数据类型及sql server08快捷键

    数据类型是数据库中的基本构建块,定义了数据的结构和意义。而SQL Server 2008中的快捷键则能提高开发人员和DBA的工作效率。 首先,我们来看三大数据库的数据类型: 1. **MySQL** 数据类型: - 数值类型:包括INT...

Global site tag (gtag.js) - Google Analytics