Java乐观锁实现文章点击量、收藏计数、点赞计数

news/2025/1/11 7:37:11/

Java乐观锁实现文章点击量、收藏计数、点赞计数

📔 千寻简笔记介绍

千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个Star

文章目录

  • Java乐观锁实现文章点击量、收藏计数、点赞计数
    • 📔 千寻简笔记介绍
    • 简介
    • 乐观锁插件
      • 1.1 配置插件
      • 1.2 在实体类的字段上加上`@Version`注解
      • 1.3 业务中直接使用

简介

当要更新一条记录的时候,希望这条记录没有被别人更新
乐观锁实现方式:

  • 取出记录时,获取当前 version
  • 更新时,带上这个 version
  • 执行更新时, set version = newVersion where version = oldVersion
  • 如果 version 不对,就更新失败

乐观锁插件

  • 项目环境:
  • Springboot:2.5.14
  • mybatis-plus:3.4.2

1.1 配置插件

spring xml 方式:

<bean class="com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor" id="optimisticLockerInnerInterceptor"/><bean id="mybatisPlusInterceptor" class="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor"><property name="interceptors"><list><ref bean="optimisticLockerInnerInterceptor"/></list></property>
</bean>

spring boot 注解方式:

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;
}

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

@Version
private Integer version;

说明:

  • 支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
  • 整数类型下 newVersion = oldVersion + 1
  • newVersion 会回写到 entity
  • 仅支持 updateById(id)update(entity, wrapper) 方法
  • update(entity, wrapper) 方法下, wrapper 不能复用!!!

示例:

// Spring Boot 方式
@Configuration
@MapperScan("按需修改")
public class MybatisPlusConfig {/*** 旧版*/@Beanpublic OptimisticLockerInterceptor optimisticLockerInterceptor() {return new OptimisticLockerInterceptor();}/*** 新版*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return mybatisPlusInterceptor;}
}

1.3 业务中直接使用

        // 根据文章id给点赞数+1Article article = iArticleService.getById(articleId);article.setLikeCount(article.getLikeCount()+1L);iArticleService.updateById(article);

http://www.ppmy.cn/news/498260.html

相关文章

Mendix 10 树形组件分析及应用

一、前言 产品研发目标是服务于业务&#xff0c;解决具体业务问题&#xff0c;带来业务价值。 因此&#xff0c;任何产品功能的推出&#xff0c;都应该秉承“从实践中来&#xff0c;到实践中去”的原则&#xff0c;在实战中发现问题&#xff0c;通过新功能设计和功能改进解决…

kettle开发-Day38-超好用自定义数据处理组件

目录 前言&#xff1a; 一、半斤八两&#xff0c;都不太行 1、表输入&#xff0c;速度快&#xff0c;但不稳妥 2、稳的一批&#xff0c;但是慢的像蜗牛 二、各诉衷肠&#xff0c;合作共赢 1、表输入&#xff0c;高效数据插入 2、插入更新&#xff0c;一个都不能少 三、表输…

D. Survey in Class(贪心 + 分类讨论)

Problem - D - Codeforces Zinaida Viktorovna 的历史课上有 n 名学生。今天的作业包括 m 个主题&#xff0c;但是学生们准备时间很短&#xff0c;所以第 i 个学生只学习了从 li 到 ri &#xff08;包括&#xff09;的主题。 在课开始时&#xff0c;每个学生都将手举在 0 处。…

计算机主机连接电视机,如何将电脑连接到电视机上_台式电脑怎么连接电视机屏幕-win7之家...

现在的电视机都是液晶显示屏&#xff0c;会配有无线、蓝牙功能等等&#xff0c;有时我们需要把电脑内容投射在电视剧上&#xff0c;这就先要连接电视机在进行连接&#xff0c;那么如何将电脑连接到电视机上呢&#xff0c;下面小编给大家分享台式电脑连接电视机屏幕的方法步骤。…

[转载]家庭剧院音效再升级HDMI eARC相容未来效能

by Marshall Goldberg HDMI 2.1是HDMI最新的标准&#xff0c;能够提升达300%的视讯传输速度&#xff0c;并透过压缩功能进一步再提升300%&#xff0c;视讯频宽较HDMI 2.0的18Gbps高9倍。HDMI 2.1标准增加一系列新特性&#xff0c;包括动态HDR(Dynamic HDR)、可变更新率(Variabl…

CM201-2-CH-Hi3798MV300/MV310-当贝纯净桌面卡刷固件包

CM201-2-CH-Hi3798MV300&#xff0f;MV310-当贝纯净桌面卡刷固件包-内有教程 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的…

【2023,学点儿新Java-15】案例分享:基于Java实现餐厅点餐系统(附完整源代码)

前情回顾&#xff1a; 【2023&#xff0c;学点儿新Java-14】携程面试题&#xff1a;如何看待Java是一门半编译半解释型的语言&#xff1f;| 咨询互联网行业 资深前辈的一些问题 | 附&#xff1a;为什么说ChatGPT的核心算法是…&#xff1f;| GPT-3.5【2023&#xff0c;学点儿新…

jQuery带背景切换登录注册表单

jQuery带背景切换登录注册表单 原始HTMLCSSJS页面设计,这是一个不错的登录网页制作&#xff0c;画面精明&#xff0c;非常适合初学者学习使用。 作品介绍 1.网页作品简介方面 &#xff1a;jQuery带背景切换登录注册表单, 文章页支持手机PC响应式布局。 2.网页作品编辑方面&…