mybatis 批量插入 decimal精度问题
问题:很简单的批量插入数据库,带小数点的decimal的入参保存到数据库发现自动四舍五入了
jdbcType=DECIMAL类型当list里面存在[{amount:20},{amount:20.4},{amount:20.54}]
<foreach item="item" collection="list" separator=","> #{item.amount,jdbcType=DECIMAL} </foreach>
这时保存到数据的值:amount :20,20,21, 这就心态蹦了啊 线上一堆数据金额问题
生活仍需继续排查:
表现:当一个list进行批量添加时,decimal 类型会取精度最小的那个值进行四舍五入
根因:暂未找到,感觉是mybatis的一个bug...
解决:
cast(#{item.amount,jdbcType=DECIMAL} as decimal(18,4)),