当前使用版本(必填,否则不予处理)

3.5.3.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

在业务代码中,需要多个数据(约200个)短时间更新【大约在500ms之内】 1. 方法1 使用语句调用

 StationIo io = stationIoMapper.selectById(id);
        if (ObjectUtil.isNotNull(io)) {
            io.setStatus(status);
            io.setUpdateTime(DateUtil.date());
           int rt =  stationIoMapper.updateById(io);
           //打印此结果rt 会一直等于1, 但是我的status和当前时间并没有更新
        } else {
            throw new CustomException("此工位不存在");
        }

//2. 方法2,编写更新语句在xml中

    <update id="updateStatus" flushCache="true">
        update sys_station_io
        set status      = #{status},
            update_time = #{updateTime}
        where station_id = #{stationId}
    </update>

两种效果都一样,发现调用接口,数据库数据并未更新,但是我在业务代码,测试单个调用或者在swagger单个接口调用,都是能够准确更新

重现步骤(如果有就写完整)

存在更新乐观锁问题吗? 需要加锁吗?还是缓存导致的,我目前在xml 设置了 flushCache=true

报错信息

Comment From: LelandACM

补充一点: 刚刚编写测试样例200次的循环可正确更新(单线程),实际业务场景存在多线程调用此webService接口

Comment From: huayanYu

多线程问题,自己处理