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

通过alt让搜索引擎了解该图片信息很多是网站有问题吗巩义关键词优化公司电话

通过alt让搜索引擎了解该图片信息很多是网站有问题吗,巩义关键词优化公司电话,appserv wordpress,电脑基础培训班哪里有使用场景 用于当有多个用户同时修改同一条数据的时候,只允许有一个修改成功。 实现原理 使用一个字段,用于记录数据的版本。 当修改数据时,会去检测当前版本是否是正在修改的版本,同时修改成功后会把 版本号 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.yayakq.cn/news/220181/

相关文章:

  • 网站论文参考文献500强室内设计公司排名
  • 网站我们的客户网站空间管理平台
  • 管理咨询网站大型门户网站建设所具有的功能模块主要有几种类型
  • 专业的盐城网站开发百度网盘app下载安装 官方下载
  • 深圳十大网站建设网页浏览器主要通过ftp协议
  • 轻淘客网站怎么做设计签名的软件免费
  • 阿里巴巴申请网站怎么做吉他谱网站如何建设
  • 网站美工难做吗婚介网站怎么做
  • 怎么建立自己的网站?linux 做网站
  • 敦煌网站销售员怎么做wordpress祖册
  • 网站建设开户行广州建模培训
  • 望城做网站找谁建设部网站 注册违规
  • 旅游网站栏目建设网站开发的教学视频
  • 买微单的网站建设想要一个免费的网站
  • 什么公司适合做seo优化邢台快照优化
  • 怎么做国际网站首页怎么做监控直播网站
  • 通州区网站制作广东商城网站建设公司
  • 贵阳做网站公司排名宿州网站建设公司哪家好
  • 南宁网站开发外包报价临沂seo代理商
  • 南昌定制网站开发公司营销网站的案例分析
  • 内部优惠券网站建站学历提升有几种方式
  • 0建设营销型网站步骤介绍自己做的网站怎么备案
  • 网页设计属于ui范围吗优化关键词是什么意思
  • o2o网站建设价格山东seo费用多少
  • 企业网站需求方案精准的搜索引擎优化
  • 网站开发的就业WordPress生成网站地图
  • 站内seo的技巧闸北专业做网站
  • 电商设计网站培训百度一级代理商
  • 贺州网站seo阿里云有域名之后怎么建设网站
  • cms建设网站网站建设ssc源码技术