gpt4 book ai didi

java - MySQL DB 上的 SimpleJdbcInsert 在executeAndReturnKey方法后返回BigInteger而不是Long

转载 作者:行者123 更新时间:2023-12-01 16:44:23 30 4
gpt4 key购买 nike

我正在使用以下主键声明对 MySQL 表运行简单的插入查询:

id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY

出于某种原因,他们返回的键是一个 BigInteger。我需要进行哪些更改才能将 Long 值作为键返回?

编辑

我基本上正在制作一个迷你 ORM,并且 Long 类型在编译时是未知的,因为它是一个类参数 ( AbstractDao<T, I> )。本质上,我需要能够将 Number 转换为 Long,而不使用任何包含 long 的内容(Long.valueOf()、.longValue() 等)。

但是我确实有一个包含 Long.class 的 Class 实例:

protected Class<?> idClass = ((Class<?>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1]);

该实例可以以某种方式用于执行转换吗?您不能将 BigInteger 强制转换为 Long,也不能将 BigInteger 的字符串表示形式强制转换为 Long。如果有一种方法可以从我的类对象访问 valueOf() 这可能有效吗?

最佳答案

executeAndReturnKey(...)返回 Number ,所以调用longValue()如果您希望结果为long

如果您的方法不知道调用者所需的确切数字类型,请让调用者执行longValue()。或者,为您想要支持的各种返回类型编写多个方法,例如

public Number insertAndGetKey(...) {
return ...executeAndReturnKey(...);
}
public int insertAndGetIntKey(...) {
return insertAndGetKey(...).intValue();
}
public long insertAndGetLongKey(...) {
return insertAndGetKey(...).longValue();
}

关于java - MySQL DB 上的 SimpleJdbcInsert 在executeAndReturnKey方法后返回BigInteger而不是Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61806755/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com