myBatis中的小数精度和插入语句有点麻烦。
它是一个列表请求,有时包含某些行中为空的值...
有效地发生的事情是当我们传递一个空值时,其他行中的小数精度会四舍五入到最接近的整数。如果没有传递空值,那么数据工作正常
所以我们的mapper文件就像......
<insert id="insertSales" parameterType="java.util.List">
insert into [dbo].[landing_sales_data]
(
[cust_code]
,[sales_value]
)
values
<foreach item="sales" collection="list" open="(" close=")" separator="),(">
#{sales.custCode},
#{sales.value,jdbcType=DECIMAL,numericScale=2}
</foreach>
</insert>
&#13;
哪个应该产生一些像
这样的SQL
insert into landing_sales_data
(
[cust_code]
,[sales_value]
)
values(1,11.11),(2,null)
&#13;
但最终结果是我们在表中得到11.00。
我们已在mapper中指定了jdbcType和数字刻度...并且SQL服务器上的跟踪确认它正在将11.11发送到数据库。
问题似乎是mybatis正在设置为null创建的参数,因为0小数精度会影响不相关的行。
任何想法?我希望我们只是遗漏了一些东西。
感谢