码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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.排序功能
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【虚幻引擎UE】UE5 两种球体绘制方法
    阿里Java面试题剖析:如何保证缓存与数据库的双写一致性?
    多个服务器的用户共享同一个用户目录的做法
    Java 24 Design Pattern 之 原型模式
    Python教程
    Python基础学习
    从硬件到软件:揭秘磁盘结构和文件系统组织
    工具及方法 - 如何生成付费链接和短链接
    使用Vscode创建一个C_Hello程序
    Application Studio 学习笔记(2)
  • 原文地址:https://blog.csdn.net/weixin_49883619/article/details/127105298
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号