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

MyBatis-Plus(二)

视频链接:https://www.bilibili.com/video/BV12R4y157Be/?spm_id_from=333.337.search-card.all.click&vd_source=9545770e4a2968c05878ffac8589ec6c
视频选集:P29— P57

文章目录

  • 1.条件构造器
    • 1.1 简介
    • 1.2 组装查询条件
    • 1.3 组装排序条件
    • 1.4 组装删除条件
    • 1.5 使用QueryWrapper实现修改功能
    • 1.6 条件的优先级
    • 1.7 组装select字句
    • 1.8 组装子查询
    • 1.9 使用UpdateWrapper实现修改功能
    • 1.10 模拟开发中组装条件的情况
    • 1.11 使用condition组装条件
    • 1.12 LambdaQueryWrapper
    • 1.13 LambdaUpdateWrapper
  • 2.插件
    • 2.1 分页插件的配置和使用
    • 2.2 分页相关数据获取
    • 2.3 自定义分页功能
  • 3.乐观锁和悲观锁
    • 3.1 模拟修改冲突
    • 3.2 MyBatis-Plus的乐观锁插件
    • 3.3 优化修改流程
  • 4.通用枚举
  • 5.代码生成器
  • 6.多数据源
    • 模拟多数据源环境
  • 7.MyBatisX插件
    • 7.1 安装
    • 7.2 MyBatisX代码快速生成【实体类、mapper接口、映射文件、service接口以及实现类】
    • 7.3 快速生成CRUD

1.条件构造器

1.1 简介

在这里插入图片描述
在这里插入图片描述

1.2 组装查询条件

测试类:
在这里插入图片描述
在这里插入图片描述

1.3 组装排序条件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 组装删除条件

在这里插入图片描述
在这里插入图片描述

1.5 使用QueryWrapper实现修改功能

在这里插入图片描述
在这里插入图片描述

1.6 条件的优先级

在这里插入图片描述
在这里插入图片描述

1.7 组装select字句

在这里插入图片描述

1.8 组装子查询

SQL语句演示:
在这里插入图片描述
条件构造器方法:
在这里插入图片描述
在这里插入图片描述

1.9 使用UpdateWrapper实现修改功能

UpdateWrapper两个功能:

  1. 设置修改的条件
  2. 设置当前要修改的字段
    在这里插入图片描述
    在这里插入图片描述

1.10 模拟开发中组装条件的情况

在这里插入图片描述
在这里插入图片描述

1.11 使用condition组装条件

在这里插入图片描述
在这里插入图片描述

1.12 LambdaQueryWrapper

防止字段名写错
在这里插入图片描述

1.13 LambdaUpdateWrapper

防止字段名写错
在这里插入图片描述

2.插件

2.1 分页插件的配置和使用

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
在这里插入图片描述
测试类:
在这里插入图片描述
在这里插入图片描述

2.2 分页相关数据获取

getRecords【获取记录,获取数据】、getPages【获取总页数】、getTotal【获取总记录数】、hasNext【获取有没有下一页】、hasPrevious【获取是否有上一页】
在这里插入图片描述

2.3 自定义分页功能

在这里插入图片描述
配置文件:【为了在resultType中使用类型别名】
在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述

3.乐观锁和悲观锁

场景:一件商品,成本价是80元,售价是100元。老板先是通知小李,说你去把商品价格增加50元。小李正在玩游戏,耽搁了一个小时。正好一个小时后,老板觉得商品价格增加到150元,价格太高,可能会影响销量。又通知小王,你把商品价格降低30元。
此时,小李和小王同时操作商品后台系统。小李操作的时候,系统先取出商品价格100元;小王也在操作,取出的商品价格也是100元。小李将价格加了50元,并将100+50=150元存入了数据库;小王将商品减了30元,并将100-30=70元存入了数据库。是的,如果没有锁,小李的操作就完全被小王的覆盖了。
现在商品价格是70元,比成本价低10元。几分钟后,这个商品很快出售了1千多件商品,老板亏1万多。

乐观锁与悲观锁:

  • 上面的故事,如果是乐观锁,小王保存价格前,会检查下价格是否被人修改过了。如果被修改过了,则重新取出的被修改后的价格,150元,这样他会将120元存入数据库。
  • 如果是悲观锁,小李取出数据后,小王只能等小李操作完之后,才能对价格进行操作,也会保证最终的价格是120元。

3.1 模拟修改冲突

创建对象:
在这里插入图片描述
创建接口:
在这里插入图片描述

测试:
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

3.2 MyBatis-Plus的乐观锁插件

修改实体类:
在这里插入图片描述
配置类中设置:
在这里插入图片描述
展示:
小李在改的时候,版本号改为1了
在这里插入图片描述

3.3 优化修改流程

由于上面代码只有小李的执行了,小王的没有执行,于是进行优化
在这里插入图片描述

在这里插入图片描述

4.通用枚举

创建一个枚举对象:【还有构造方法】
在这里插入图片描述
在配置文件中:
在这里插入图片描述

在User中表示:
在这里插入图片描述
测试:
在这里插入图片描述

5.代码生成器

在这里插入图片描述
创建一个测试类:把下面代码放入其中
在这里插入图片描述
直接运行:
在这里插入图片描述
生成:
在这里插入图片描述

在这里插入图片描述

其中的文件:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.多数据源

适用于多种场景:纯粹多库、读写分离、一主多从、混合模式等
目前我们就来模拟—个纯粹多库的一个场景,其他场景类似
场景说明:
我们创建两个库,分别为: mybatis_plus (以前的库不动)与mybatis_plus_1(新建),将mybatis_plus库的product表移动到mybatis_plus_1库,这样每个库一张表,通过一个测试用例分别获取用户数据与商品数据,如果获取到说明多库模拟成功

模拟多数据源环境

在这里插入图片描述
在这里插入图片描述
2.引入依赖
在加上下面的注解:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

定义User实体类:
在这里插入图片描述

在这里插入图片描述
定义Product实体类:
在这里插入图片描述
在这里插入图片描述
定义接口:
在这里插入图片描述
在这里插入图片描述
注册:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
定义service接口:
在这里插入图片描述
实现类:
在这里插入图片描述
定义service接口:
在这里插入图片描述
实现类:
在这里插入图片描述
测试类:
在这里插入图片描述
展示:
在这里插入图片描述
注意:
在这里插入图片描述

7.MyBatisX插件

  • MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率
  • 但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题,例如一些复杂的SQL,多表联查,我们就需要自己去编写代码和SQL语句,我们该如何快速的解决这个问题呢,这个时候可以使用MyBatisX插件
  • MyBatisX—款基于IDEA的快速开发插件,为效率而生。
  • MyBatisX插件用法: https://baomidou.com/pages/ba5b24/

7.1 安装

添加插件:
在这里插入图片描述
创建映射文件:
在这里插入图片描述

7.2 MyBatisX代码快速生成【实体类、mapper接口、映射文件、service接口以及实现类】

先连接数据库才能使用这个功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述

7.3 快速生成CRUD

1.添加功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.删除功能
在这里插入图片描述
根据多个条件删除
在这里插入图片描述
在这里插入图片描述
3.修改功能

在这里插入图片描述
在这里插入图片描述
4.查询功能
在这里插入图片描述

在这里插入图片描述
5.排序功能
在这里插入图片描述
在这里插入图片描述

相关文章:

  • Linux-常见命令(三)
  • 【国庆活动】Spring Boot 必知必会的核心理念(二)
  • c++:程序流程结构,顺序结构,选择结构if else,三目运算符
  • 使用 Amazon Rekognition API 进行文本检测和 OCR
  • 内核驱动踩坑记录
  • 半导体中的杂质和缺陷能级
  • SSM毕设项目大学生心理咨询系统792l6(java+VUE+Mybatis+Maven+Mysql)
  • 嵌入式学习的第二天
  • R语言(4) plot函数介绍
  • JVM -- 垃圾回收器7种(四)
  • 模型调优:验证集的作用(就是为了调整超参数)
  • PyQt5之消息对话框
  • java计算机毕业设计校友闲置书籍管理平台源代码+数据库+系统+lw文档
  • Interactron | 体现自适应的目标检测器
  • javaEE---CSS
  • 0基础学习移动端适配
  • Git同步原始仓库到Fork仓库中
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript设计模式之工厂模式
  • MySQL QA
  • Python学习之路16-使用API
  • React Native移动开发实战-3-实现页面间的数据传递
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 百度小程序遇到的问题
  • 笨办法学C 练习34:动态数组
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 猴子数据域名防封接口降低小说被封的风险
  • 讲清楚之javascript作用域
  • 排序算法之--选择排序
  • 移动端解决方案学习记录
  • 译米田引理
  • 用Visual Studio开发以太坊智能合约
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 回归生活:清理微信公众号
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #include
  • (1)(1.11) SiK Radio v2(一)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (TOJ2804)Even? Odd?
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)Linux+Windows下安装ffmpeg
  • (转)scrum常见工具列表
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .equals()到底是什么意思?
  • .net 获取url的方法
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件