1. 使用全局唯一ID
在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行(或者是新增操作还是更新操作)。如果不存在则把全局ID,存储到存储系统中,比如数据库、redis等。
2. 多版本控制
在更新的接口中增加一个版本号,来做幂等
boolean updateGoodsName(int id,String newName,int version);
update goods set name=#{newName},version=#{version} where id=#{id} and version<${version}
3.条件控制
update goods set name=#{newName}where id=#{id} and status<3;
4. 分布式锁防止重复提交
如:利用redis的setnx