尚医通——后台搭建——MybatisPlus自动填充和乐观锁
目录标题
- 自动填充和乐观锁
- 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场景
主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新
乐观锁实现方式:
- 取出记录时,获取当前version
- 更新时,带上这个version
- 执行更新时, set version = newVersion where version = oldVersion
如果version不对,就更新失败 - 接下来介绍如何在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自动填充和乐观锁相关推荐
- mybatisplus的详细使用(自动填充,乐观锁,分页,条件查询)
1.自动填充 @Data @EqualsAndHashCode(callSuper = false) @TableName("t_user") public class User ...
- ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...
目录 一.insert 1.插入操作 2.主键策略 二.update 1.根据Id更新操作 2.自动填充 3.乐观锁 三.select 1.根据id查询记录 2.通过多个id批量查询 3.简单的条件查 ...
- 尚医通 (二) --------- MyBatis Plus 详解
目录 一.简介 二.创建并初始化数据库 三.确认 idea 配置 四.创建项目 五.编写代码 六.主键策略 1. 插入操作 2. MP 的主键策略 七.自动填充和乐观锁 1. 更新操作 2. 自动填充 ...
- 尚硅谷 尚医通学习笔记
尚医通简介 尚医通可以网上预约挂号. 核心技术 SpringBoot : 简化新 Spring 应用的初始搭建以及开发过程 SpringCloud : 基于 Springboot 实现的云原生的开发工 ...
- 尚医通项目:项目总结
课程链接:尚医通项目 开始时间:2022-07-09 项目总结 尚医通业务流程 项目功能总结(后台管理系统) 本地访问地址 http://localhost:9528/ 医院设置管理 (1)医院设置列 ...
- 尚医通项目笔记--包括每个接口对应页面的图片
废话不多说,直接上图 博客目录结构 工程目录结构 yygh-parent根目录common公共模块父节点common-util公共工具类rabbit-util业务封装RabbitMQservice-u ...
- 10.java项目-尚医通(10)
前端代码:https://github.com/wyj41/yygh_html.git 后端代码:https://github.com/wyj41/yygh_parent.git 1.用户订单管理 1 ...
- 尚医通【预约挂号系统】总结
这里写目录标题 1.项目介绍 2.技术点 3.业务流程 4.项目架构 5.项目源码(包含sql) 6.启动步骤 7.项目模块说明 8.项目功能总结 9.效果图 后台管理端 前端展示端 数据库 1.项目 ...
- 尚医通项目101-123:前台用户系统、登录注册、邮箱登录
开始时间:2022-05-30 课程链接:课程链接:[尚医通] 前端页面 需要完成医院等级.地区查询.医院列表.医院名称模糊查询等功能 按等级查询 按地区查询 模糊查询 并能跳转到具体详情页面 跳转到 ...
最新文章
- java鼠标进入高亮效果_鼠标选中文本划词高亮、再次选中划词取消高亮效果
- cocos2d-x游戏开发(九)重要的基类CCNode
- 0010服务器无对应信息,查看云服务器信息
- gcc,cc,g++,CC的区别
- 工业机器人演示码垛和卸垛_众多企业购买自动码垛机的原因是什么?
- oracle 之索引,同义词 ,关键词,视图 ,存储过程,函数,触发器
- linux线程能删除自身吗,Linux内核本身和进程的区别 内核线程、用户进程、用户...
- Ubuntu安装报错E: Could not get lock /var/lib/dpkg/lock-frontend
- ipv4网络配置方法
- 用R语言理解圆周率、自然对数和欧拉常数
- CPU天梯图/显卡天梯图---kalrry
- mathtype2023专门打数学符号的软件
- 我的世界服务器物品展示怎么得,我的世界物品展示框详解攻略 物品展示框怎么做...
- Python中第三方库-Faker应用
- 以CVPR顶会论文为例,探讨AI论文的阅读方法
- Navicate使用
- 计算机软件科学专利,计算机软件的专利保护研究
- 内存超频有意义吗 内存超频有什么好处和坏处
- ad10搜索快捷键_AD10设计所需快捷键(席雪晴)
- 2014年24段魔尺如何变球的视频教程