mybatis 更新、删除、插入 错误的返回影响的行数

当用mybatis 执行 插入、删除、更新操作要以返回影响的行数来判断这些操作时是否执行的时候,mybatis返回的行数是一个负数,这主要是有以下几点原因

原因:

  1. 当连续执行两次相同的更新操作时,msyql客户端在第一次在执行更新时候,影响返回的值是等于1的,则第二次执行的同样的更新操作时,影响返回的值是等于0的。这主要是mysql在执行update的时候,若是update没有影响行数,则返回0;
    而Mybatis不会返回这个,它返回的是匹配行数,也就是在update的时候是否能找到一条数据库表所要更新的字段;所以怎么返回都是1。
    解决办法是: 在jdbc连接中加一句话:useAffectedRows=true
    加了这条后就同步mysql的所影响的行数啦
    在这里插加了入图片描述

  2. MyBatis发现更新和插入返回值一直为"-2147482646"的错误是由defaultExecutorType设置引起的,如果设置为BATCH,更新返回值就会丢失。mybatis官方的讨论列表,这句很关键:“If the BATCH
    executor is in use, the update counts are being lost. ”
    看图上的描述
    在这里插入图片描述

  3. 第三个原因就是在applicationContext.xml里也配置了一个执行批量的sql,里面也包含了这个defaultExecutorType的属性值的设定
    看图 在这里插入图片描述
    只要把这段bean属性全部注释掉就可以了,如果还在其他的xml文件里也应用了mybatis的这个defaultExecutorType的设定也要删除掉,因为只要开启这个批量的属性就会影响返回的行数。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值