多富于讽刺呀,今天不小心差点被PIR,还好现在生产上的交易额没有那么大,没有达到千万。
我们的系统是通过ibatis来调用DB的存储过程,DB返回的数据类型是oracle的Float类型,在ibatis中的配置是这样的:
<parameter property="out_acct_balance" javaType="java.lang.Float" jdbcType="FLOAT" mode="OUT"/>
问题就在于上面标红的东东。
比如数据库给返回了1234567.68,那么ibatis就会自动转换为1234567.60,郁闷不?0.08即8分钱就没有了。
java.lang.Float只能装8位,然后就把小数点后面的就去掉了。做个测试类测一测。
上面的输出就是1234567.6。
很小的一个问题,但就是粗心,粗心害死猫!!^_^
记录下来以后引以为戒。。
正确的做法应该是:
<parameter property="out_acct_balance" javaType="java.lang.String" jdbcType="FLOAT" mode="OUT"/>