我有一个针对 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/