Story

使用mybatia寫入sqlserver db時的問題,當xml檔採用foreach的方式進行批量寫入時,BigDecimal的變數會因每筆寫入的精度不一致而採最低的精度寫入到db中

solve

cast

1
2
3
4
5
6
7
8
9
10
11
12
13
<insert id="insertList" >
insert into salary_list (id, user_id, type,base_salary)
VALUES
<foreach collection="list" item="item" index="index" separator =",">
(
#{item.id,jdbcType=BIGINT},
#{item.userId,jdbcType=BIGINT},
#{item.type,jdbcType=INTEGER},
cast(#{item.baseSalary,jdbcType=DECIMAL} as decimal(18,2))
)
</foreach>
</insert>

using sqljdbc4 driver

筆者嘗試使用此方式,但未成功。


reference