当前使用版本(必填,否则不予处理)
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
多线程问题,自己处理