目录标题

  • 自动填充和乐观锁
  • 1、更新操作
  • 2、自动填充
    • 1.1数据库修改
    • 1.2实体类修改
    • 1.3实现元对象处理器接口
  • 3、乐观锁
    • 3.1场景
  • 4、乐观锁实现流程
    • 4.1修改实体类
    • 4.2创建配置文件
    • 4.3注册乐观锁插件

自动填充和乐观锁

1、更新操作

注意:update时生成的sql自动是动态sql:

UPDATE user SET age=? WHERE id=?
//修改
@Test
public void testUpdate() {User user = new User();user.setId(1340868235401764865L);user.setName("lucymary");int count = userMapper.updateById(user);System.out.println(count);
}

2、自动填充

需求描述:
项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。
我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作

1.1数据库修改

在User表中添加datetime类型的新的字段 create_time、update_time

1.2实体类修改

实体上增加字段并添加自动填充注解

@TableField(fill = FieldFill.INSERT)
private Date createTime;  //create_time@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime; //update_time

1.3实现元对象处理器接口

注意:不要忘记添加 @Component 注解

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {//mp执行添加操作,这个方法执行@Overridepublic void insertFill(MetaObject metaObject) {this.setFieldValByName("createTime",new Date(),metaObject);this.setFieldValByName("updateTime",new Date(),metaObject);}//mp执行修改操作,这个方法执行@Overridepublic void updateFill(MetaObject metaObject) {this.setFieldValByName("updateTime",new Date(),metaObject);}
}

3、乐观锁

3.1场景

主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新

乐观锁实现方式:

  1. 取出记录时,获取当前version
  2. 更新时,带上这个version
  3. 执行更新时, set version = newVersion where version = oldVersion
    如果version不对,就更新失败
  4. 接下来介绍如何在Mybatis-Plus项目中,使用乐观锁

4、乐观锁实现流程

4.1修改实体类

添加 @Version 注解

@Version
private Integer version;

4.2创建配置文件

创建包config,创建文件MybatisPlusConfig.java
此时可以删除主类中的 @MapperScan 扫描注解

@Configuration
@MapperScan("com.atguigu.demomptest.mapper")
public class MpConfig {/*** 乐观锁插件*/@Beanpublic OptimisticLockerInterceptor optimisticLockerInterceptor() {return new OptimisticLockerInterceptor();}
}

4.3注册乐观锁插件

在 MybatisPlusConfig 中注册 Bean
/**
* 乐观锁插件
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {return new OptimisticLockerInterceptor();
}

尚医通——后台搭建——MybatisPlus自动填充和乐观锁相关推荐

  1. mybatisplus的详细使用(自动填充,乐观锁,分页,条件查询)

    1.自动填充 @Data @EqualsAndHashCode(callSuper = false) @TableName("t_user") public class User ...

  2. ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...

    目录 一.insert 1.插入操作 2.主键策略 二.update 1.根据Id更新操作 2.自动填充 3.乐观锁 三.select 1.根据id查询记录 2.通过多个id批量查询 3.简单的条件查 ...

  3. 尚医通 (二) --------- MyBatis Plus 详解

    目录 一.简介 二.创建并初始化数据库 三.确认 idea 配置 四.创建项目 五.编写代码 六.主键策略 1. 插入操作 2. MP 的主键策略 七.自动填充和乐观锁 1. 更新操作 2. 自动填充 ...

  4. 尚硅谷 尚医通学习笔记

    尚医通简介 尚医通可以网上预约挂号. 核心技术 SpringBoot : 简化新 Spring 应用的初始搭建以及开发过程 SpringCloud : 基于 Springboot 实现的云原生的开发工 ...

  5. 尚医通项目:项目总结

    课程链接:尚医通项目 开始时间:2022-07-09 项目总结 尚医通业务流程 项目功能总结(后台管理系统) 本地访问地址 http://localhost:9528/ 医院设置管理 (1)医院设置列 ...

  6. 尚医通项目笔记--包括每个接口对应页面的图片

    废话不多说,直接上图 博客目录结构 工程目录结构 yygh-parent根目录common公共模块父节点common-util公共工具类rabbit-util业务封装RabbitMQservice-u ...

  7. 10.java项目-尚医通(10)

    前端代码:https://github.com/wyj41/yygh_html.git 后端代码:https://github.com/wyj41/yygh_parent.git 1.用户订单管理 1 ...

  8. 尚医通【预约挂号系统】总结

    这里写目录标题 1.项目介绍 2.技术点 3.业务流程 4.项目架构 5.项目源码(包含sql) 6.启动步骤 7.项目模块说明 8.项目功能总结 9.效果图 后台管理端 前端展示端 数据库 1.项目 ...

  9. 尚医通项目101-123:前台用户系统、登录注册、邮箱登录

    开始时间:2022-05-30 课程链接:课程链接:[尚医通] 前端页面 需要完成医院等级.地区查询.医院列表.医院名称模糊查询等功能 按等级查询 按地区查询 模糊查询 并能跳转到具体详情页面 跳转到 ...

最新文章

  1. java鼠标进入高亮效果_鼠标选中文本划词高亮、再次选中划词取消高亮效果
  2. cocos2d-x游戏开发(九)重要的基类CCNode
  3. 0010服务器无对应信息,查看云服务器信息
  4. gcc,cc,g++,CC的区别
  5. 工业机器人演示码垛和卸垛_众多企业购买自动码垛机的原因是什么?
  6. oracle 之索引,同义词 ,关键词,视图 ,存储过程,函数,触发器
  7. linux线程能删除自身吗,Linux内核本身和进程的区别 内核线程、用户进程、用户...
  8. Ubuntu安装报错E: Could not get lock /var/lib/dpkg/lock-frontend
  9. ipv4网络配置方法
  10. 用R语言理解圆周率、自然对数和欧拉常数
  11. CPU天梯图/显卡天梯图---kalrry
  12. mathtype2023专门打数学符号的软件
  13. 我的世界服务器物品展示怎么得,我的世界物品展示框详解攻略 物品展示框怎么做...
  14. Python中第三方库-Faker应用
  15. 以CVPR顶会论文为例,探讨AI论文的阅读方法
  16. Navicate使用
  17. 计算机软件科学专利,计算机软件的专利保护研究
  18. 内存超频有意义吗 内存超频有什么好处和坏处
  19. ad10搜索快捷键_AD10设计所需快捷键(席雪晴)
  20. 2014年24段魔尺如何变球的视频教程

热门文章

  1. Windows操作系统名称与版本号汇总
  2. 二进制和十进制怎么互转
  3. Raptor 经典例题 2 (冒泡法排序 100名同学拉成一圈)
  4. 回顾2022,展望2023,一个普通程序员的自述和分享
  5. ios appstore 审核 Guideline 5.2.2 - Legal ios新闻资讯类APP5.2.2被拒
  6. Hash函数及其重要性
  7. 被封了?教你如何解封chatgpt账号,中英版都有
  8. 表单设计中标签的布局方式有哪些
  9. 深度学习之目标检测--Pytorch实战
  10. Android12 HDR相关