java - Spring queryForLong - 精度损失

标签 java mysql spring precision

我有一个针对 MySql 数据库运行的 Spring 应用程序。我有一个像这样的销售表:

+-------------------+------------------------------+------+-----+---------+-------+
| Field             | Type                         | Null | Key | Default | Extra |
+-------------------+------------------------------+------+-----+---------+-------+
| Price             | decimal(19,4)                | NO   |     | NULL    |       |
| ItemId            | int(10) unsigned             | NO   |     | NULL    |       |
+-------------------+------------------------------+------+-----+---------+-------+

在我的 Spring 类(class)中,我有以下内容:

long price = getSimpleJdbcTemplate().queryForLong("SELECT price FROM sales WHERE itemID = :itemID", params);
logger.info("price: " + price + ");

但是,这将返回价格 1,即使直接在数据库上查询返回 0.8500 也是如此。如何避免这种从数据库中的小数到我的代码中的长整数的精度损失?

最佳答案

long 不支持小数位,因为它是整数类型。您是否尝试过 queryForObject(sql, BigDecimal.class, params)

关于java - Spring queryForLong - 精度损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2045871/

相关文章:

java - 如何使用Spring编写注解触发的方法拦截器?

java - 尝试将中缀转换为后缀返回向后输出

java - 使用数据库更改缓存更新

java - 循环中的 if 语句中的 i-- 做什么?

php - 加密电子邮件、散列密码并将其存储在数据库中?

spring - 为嵌入式 tomcat 指定自定义 web.xml

java - Struts 2 "<s:if>"标签无法按预期工作

mysql - 使用 mysql 选择前 N *组*

MySQL写入文本文件

java - 如果我有一个复杂的响应对象,如何使用 JsonIninclude 注释忽略空值