一、背景
由于项目中同一个网元,可能会被多个不同用户操作,而且操作大部分都是以异步子任务形式进行执行,这样就会带来并发写数据问题,本文通过利用无事务方式插入数据库解决并发插入问题,算是解决问题的一种思路,算是抛砖引玉吧。
二、方案
1.先根据id查询数据库中是否存在该数据,如果存在则代表已经插入过了,直接返回
2.如果不存在此条数据,插入数据库
3.获取插入后的自增主键id
4.防止并发场景,再次查询一次,如果id一致,则代表插入成功,如果id不一致,则代表插入失败,删除这条旧数据
5.如果id不一致,则代表插入失败,删除这条旧数据
三、代码模拟实现
/**
* 无事务插入数据库,防止并发插入
* @param nodeVo 网元信息
*/
public void insertNode(NodeVo nodeVo)

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



