如何使用Mybatis将sql类型映射到java类型
因此,我的java向SQL发送一个查询,该查询返回多个字段。一些字段将作为如何使用Mybatis将sql类型映射到java类型,java,sql,mybatis,Java,Sql,Mybatis,因此,我的java向SQL发送一个查询,该查询返回多个字段。一些字段将作为DOUBLE返回给java,因为它们在SQL中的类型是FLOAT/NUMERIC。这会导致精度问题。我希望mybatis将DOUBLE直接映射到BIGDECIMAL。怎样才能做到这一点 我的Mybatis结果图: <resultMap id="newResultMap" type="java.util.HashMap" autoMapping="true&qu
DOUBLE
返回给java,因为它们在SQL中的类型是FLOAT
/NUMERIC
。这会导致精度问题。我希望mybatis将DOUBLE
直接映射到BIGDECIMAL
。怎样才能做到这一点
我的Mybatis结果图:
<resultMap id="newResultMap" type="java.util.HashMap" autoMapping="true">
<association property="someObject" resultMap="someObjectMap" />
</resultMap>
请解释如何重现“精度问题”。我阅读并测试了您的,但无法再现问题,即,如果列为双精度
,且其值为-42295.8451869851
,查询返回的HashMap包含java.lang.Double
of-42295.8451869851
。我是否正确理解了精度问题
指的是数值
值的有效位数超过16位的情况(java中Double
的最大有效位数)?会在resultMap帮助中jdbcType=BIGDECIMAL
?这将强制使用新的BigDecimal(值)
创建结果。或者可以使用实际对象,而不是BigDecimal类型的映射。如果这不起作用,您需要编写自己的自定义处理程序。