当前位置: 首页 > news >正文

如何自己开发一款游戏百度seo关键词排名推荐

如何自己开发一款游戏,百度seo关键词排名推荐,服务周到的响应式网站,陶瓷网站开发背景使用场景 用于当有多个用户同时修改同一条数据的时候,只允许有一个修改成功。 实现原理 使用一个字段,用于记录数据的版本。 当修改数据时,会去检测当前版本是否是正在修改的版本,同时修改成功后会把 版本号 1。 实现方式 配…

使用场景

用于当有多个用户同时修改同一条数据的时候,只允许有一个修改成功。

实现原理

使用一个字段,用于记录数据的版本。
当修改数据时,会去检测当前版本是否是正在修改的版本,同时修改成功后会把 版本号 + 1

实现方式

  1. 配置插件
  2. 在实体类的字段上加上@Version注解

在这里插入图片描述

代码

配置插件

package com.example.core.config;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan("com.example.web")
public class MybatisPlusConfig {/*** 添加拦截器*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); // 乐观锁插件interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); // 针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 如果配置多个插件,切记分页最后添加// interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbTypereturn interceptor;}
}

在实体类的字段上加上@Version注解

package com.example.web.entity;import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;@Datapublic class User {// 其他字段/*** 版本*/@Versionprivate Integer version;
}

数据库表

在这里插入图片描述

测试

代码

    /*** 插入用户*/@Testpublic void insert() {User user = new User();user.setId(16L);user.setName("郑一");user.setAge(30);user.setEmail("zhengyi@example.com");user.setGender(GenderEnum.MALE);mapper.insert(user);}/*** 更新用户:版本号为空,乐观锁失效。*/@Testpublic void update() {User user = new User();user.setId(16L);user.setAge(31);mapper.updateById(user);}/*** 更新用户:版本号 +1(版本号不为空,乐观锁有效)。*/@Testpublic void updateWithVersion() {User user = mapper.selectById(16L);user.setAge(31);mapper.updateById(user);}/*** 更新用户:测试同时更新,第二个更新失败。*/@Testpublic void updateConcurrent() {// 同步查询User user1 = mapper.selectById(16L);user1.setAge(32);User user2 = mapper.selectById(16L);user2.setAge(33);// 更新mapper.updateById(user1);mapper.updateById(user2);}

新插入的数据

在这里插入图片描述

更新时版本号为空,乐观锁失效

感觉这像是一个漏洞。
在这里插入图片描述

更新时版本号不为空,乐观锁有效

当 实体 的 version 字段不为空时,乐观锁才能正常生效。
在这里插入图片描述

模拟同时更新

同一条数据,查询两次出来。然后调用两次更新,第一次更新成功,第二次更新失败。

查询两次数据

在这里插入图片描述

两次更新,第一次成功了,Updates: 1;第二次失败了,Updates: 0

在这里插入图片描述

http://www.zhongyajixie.com/news/59501.html

相关文章:

  • 湖南长沙网站建设微信5000人接推广费用
  • 奇米网怎么做网站百度游戏客服在线咨询
  • php 网站后台管理系统百度seo快速
  • 263企业邮箱怎么样成都seo优化公司
  • 云南做网站的公司windows优化工具
  • 湖北做网站价格企业培训平台
  • 高端广告公司网站建设价格效果好的关键词如何优化
  • 福州做公司网站百度热搜电视剧
  • 做网站销售电销好做吗亚马逊排名seo
  • 织梦网站后台登陆海外推广营销 平台
  • 网站权重高 做别的关键词怎样推广app
  • 衡阳网站开发来客seo
  • 电子商务网站建设的整体规划百度一下搜索
  • 常德外贸网站优化推广网站推广的概念
  • 网易做相册旅游网站广告推广计划
  • 有做外国人的零售网站吗怎么做自媒体
  • 可以做直播的游戏视频网站网坛最新排名
  • 花钱做网站要多少钱seo是指什么意思
  • 秦皇岛 网站建设合肥网站排名推广
  • 少儿编程的好处网络优化需要哪些知识
  • 网站后台公告id修改免费大数据平台
  • 如何重建网站百度自媒体平台
  • 批量做网站引流今日热搜榜前十名
  • 凤台做网站网络优化网站
  • 如何做网站小编网络优化软件有哪些
  • 要建设一个网站需要准备些什么关键词挖掘爱站网
  • 外贸手工做兼职的网站2022真实新闻作文400字
  • 网站建设 软件开发的公司哪家好chrome官网
  • 做自己的网站企业中层管理人员培训课程
  • 数据库网站开发教程发布软文