所以我试着从mysql到java中读取一些双精度值。我使用mybatis映射器读取我的值,并将值作为映射返回。
当我在sql中运行查询时,我的值是-42295.8451869851,但是当我使用mybatis从查询中选取相同的值并将其放入java Hashmap中时,值变为{Double@25327}-42295.84518699004。为什么会出现这种异常,我可以做些什么来防止它?
这是我正在使用的mybatis查询行:我正在使用类org.apache.ibatis.session.SqlSession;
List<Map<String, Object>> myListMaps = getSqlSession().selectList(QUERY_NAME, queryParameters);编辑:在看了一些回复后,我意识到我需要如何使用bigDecimal而不是Double/Float。因此,我将重新定义我的问题,以解决我在这里的目的。有没有办法告诉mybatis某个sql类型要映射到BigDecimal,而不是HashMap中的Double/Float?
我还从sql中提取了其他值,如integer和varchar,它们会自动转换为java中所需的integer和string类型,我希望按原样提取它们。只需将双精度数改为bigdecimal即可。
发布于 2020-09-11 14:04:33
如果需要precision doc,请使用BigDecimal。
https://stackoverflow.com/questions/63841429
复制相似问题