mybatis 与sqlserver相关的批量插入的问题

项目上遇到一个关于sqlserver批量插入的问题,持久层框架是mybatis;
开始采用的批量插入方法如下图:
INSERT INTO numas_qos_cri_rating_level(cri_id,rating_level_id,operator1,number1,operator2,number2)
<foreach collection="levelList" item="param" separator=" union all ">
    SELECT
    #{criId,jdbcType=INTEGER},
    #{param.ratingLevelId,jdbcType=INTEGER},
    #{param.operator1,jdbcType=VARCHAR},
    #{param.number1,jdbcType=NUMERIC},
    #{param.operator2,jdbcType=VARCHAR},
    #{param.number2,jdbcType=DECIMAL}
</foreach>
正常批量插入的时候是没什么问题。但是,number1和number2在后端是用的bigdecimal存储(后面说的整数跟小数都是前端传回来的数据格式),当list中number1或者
number2既有小数,又有整数的时候,或者是小数跟null值,即list{(number1=1.13,number2=1.13),(number1=2,number2=null)的时候,存入数据库时number1和
number2都会被改变,number1会存1,和2,number2会存1跟null。当number1跟number2都为小数的时候则正常存储。
下面是改变后的批量插入语句:
<foreach collection="levelList" item="param" separator=";" index="index">
    INSERT INTO numas_qos_cri_rating_level(cri_id,rating_level_id,operator1,number1,operator2,number2)
    values
    (
    #{criId,jdbcType=INTEGER},
    #{param.ratingLevelId,jdbcType=INTEGER},
    #{param.operator1,jdbcType=VARCHAR},
    #{param.number1,jdbcType=NUMERIC},
    #{param.operator2,jdbcType=VARCHAR},
    #{param.number2,jdbcType=NUMERIC}
    )
</foreach>
先行记录一下,有知道上面值为什么会被改变的小伙伴可以指导一下,之后准备再去查找一下文档看看
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值