最近在做一个项目,数据库是使用的sqlserver,使用的mybatis插件,在映射的xml里面写了一个简单的批量插入的sql,直接执行这个sql,数据能正常保存,但是使用程序来调用,就会导致数据精度丢失,下面是原来的语句写的
<insert id="batchInsertDmIZdgljymxbSgs" parameterType="java.util.List">
insert into
dm_i_zdgljymxb_sg
(<include refid="Base_Column_List1"></include>)
values
<foreach collection="list" item= "item" index ="index" separator=",">
(
#{item.lsh},
#{item.bxjgdm},
#{item.bxjgmc},
#{item.cjrq},
#{item.gljyje}
)
</foreach>
</insert>
修改为以下语句,精度问题就解决了
<insert id="batchInsertDmIZdgljymxbSgs" parameterType="java.util.List">
insert into
dm_i_zdgljymxb_sg
(<include refid="Base_Column_List1"></include>)
values
<foreach collection="list" item= "item" index ="index" separator=",">
(
#{item.lsh},
#{item.bxjgdm},
#{item.bxjgmc},
#{item.cjrq},
cast(#{item.gljyje} as decimal(22,6))
)
</foreach>
</insert>
尝试过在mysql里面去执行,发现不会出现这种问题,只有在sqlserver的批量插入的时候才会出现这个问题