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


测试类:












SQL语句演示:

条件构造器方法:


UpdateWrapper两个功能:






防止字段名写错

防止字段名写错

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能

测试类:


getRecords【获取记录,获取数据】、getPages【获取总页数】、getTotal【获取总记录数】、hasNext【获取有没有下一页】、hasPrevious【获取是否有上一页】


配置文件:【为了在resultType中使用类型别名】


测试:

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

创建接口:

测试:


结果:

修改实体类:

配置类中设置:

展示:
小李在改的时候,版本号改为1了

由于上面代码只有小李的执行了,小王的没有执行,于是进行优化


创建一个枚举对象:【还有构造方法】

在配置文件中:

在User中表示:

测试:


创建一个测试类:把下面代码放入其中

直接运行:

生成:


其中的文件:






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



在加上下面的注解:



定义User实体类:


定义Product实体类:


定义接口:


注册:



定义service接口:

实现类:

定义service接口:

实现类:

测试类:

展示:

注意:

添加插件:

创建映射文件:

先连接数据库才能使用这个功能



效果:

1.添加功能



2.删除功能

根据多个条件删除


3.修改功能


4.查询功能


5.排序功能

