• 尚医通(一)


    视频链接:https://www.bilibili.com/video/BV1V5411K7rT?vd_source=9545770e4a2968c05878ffac8589ec6c
    视频选集:P1— P10
    Java微服务 + 分布式 +全栈项目

    1.尚医通介绍

    1.1 简介

    尚医通即为网上预约挂号系统,网上预约挂号是近年来开展的一项便民就医服务,旨在缓解看病难、挂号难的就医难题,许多患者为看一次病要跑很多次医院,最终还不一定能保证看得上医生。网上预约挂号全面提供的预约挂号业务从根本上解决了这一就医难题。随时随地轻松挂号!不用排长队!.

    1.2 核心技术

    后端技术:

    • SpringBoot:简化新Spring应用的初始搭建以及开发过程,
    • SpringCloud :基于Spring Boot实现的云原生应用开发工具,SpringCloud使用的技术:(SpringCloudGateway、Spring Cloud Alibaba Nacos、Spring Cloud Alibaba Sentinel、SpringCloud Task 和 SpringCloudFeign.等),
    • MyBatis-Plus:持久层框架
    • Redis:内存缓存
    • RabbitMQ:消息中间件
    • HTTPClient: Http协议客户端
    • Swagger2 : Api接口文档工具
    • Nginx:负载均衡
    • Lombok
    • Mysql:关系型数据库
    • MongoDB∶面向文档的NoSQL数据库

    前端技术:

    • Vue.js:web界面的渐进式框架
    • Node.js:JavaScript运行环境
    • Axios:Axios是—个基于promise的HTTP库
    • NPM:包管理器
    • Babel:转码器·
    • Webpack:打包工具

    其它技术:

    • Docker:容器技术
    • Git:代码管理工具
    • DockerFile:管理Docker镜像命令文本
    • Jenkins:持续集成工具

    1.3 业务流程

    管理员系统:
    	数据管理
    	医院管理
    	会员管理
    	订单管理
    	统计管理
    
    用户系统:
    	首页数据显示
    	预约挂号
    	支付挂号订单
    	登录
    		手机号登录
    		微信登录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    1.4 服务架构

    在这里插入图片描述

    2.MyBatis-Plus入门

    2.1 简介

    MyBatis-Plus(简称MP)是一个MyBatis,的增强工具,在 MyBatis, 的基础上只做增强不做改变,为简化开发、提高效率而生。

    MP入门步骤:

    1. 创建数据库,创建数据库表

    2. 创建工程 springboot
      在这里插入图片描述

    3. 在项目引入mp和相关依赖

    4. 配置数据库信息
      在这里插入图片描述
      在这里插入图片描述

    5. 编写核心代码
      在这里插入图片描述

    6. 测试
      在这里插入图片描述

    查看sql输出日志:放在application.properties里面
    在这里插入图片描述

    2.2 添加和主键策略

    在这里插入图片描述
    在这里插入图片描述
    主键策略
    MyBatis-Plus默认的主键策略是:ASSIGN_ID(使用了雪花算法)
    在这里插入图片描述

    在这里插入图片描述
    雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。

    2.3 修改和自动填充

    修改:
    在这里插入图片描述
    自动填充:

    1. 准备工作:
      在表添加两个字段【添加datetime类型的新的字段create_time、update_time】
      在这里插入图片描述
      在表对应实体类添加对应属性:
      在这里插入图片描述

    2. 在实体类要进行自动填充属性添加注解
      在这里插入图片描述

    3. 创建类实现接口,实现接口两个方法,一个方法添加执行,一个方法修改执行,设置添加什么值
      在这里插入图片描述

    2.4 乐观锁

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

    乐观锁实现方式:

    • 取出记录时,获取当前version
    • 更新时,带上这个version
    • 执行更新时, set version = newVersion where version = oldVersion
    • 如果version不对,就更新失败

    在这里插入图片描述
    接下来介绍如何在 Mybatis-Plus项目中,使用乐观锁

    1. 在表添加字段作为版本号,在表对应实体类添加版本号属性
      在这里插入图片描述在这里插入图片描述
      在这里插入图片描述
    2. 在实体类进行版本号操作属性上面添加注解
      在这里插入图片描述
    3. 配置乐观锁插件【在单独的配置文件中】
      在这里插入图片描述
    4. 测试
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    2.5 简单查询

    2.5.1 通过多个id批量查询

    在这里插入图片描述

    2.5.2 简单的条件查询

    通过map封装查询条件
    注意: map中的key对应数据库中的列名。如︰数据库user_id,实体类是userld,这时map的key需要填写user_id
    在这里插入图片描述

    2.5.3 分页查询

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

    • 添加分页插件
      配置类中添加@Bean配置
      在这里插入图片描述
    • 测试selectPage分页
      先插件Page对象,传入两个参数【当前页、每页记录数】;然后调用mp的方法实现分页
      测试∶最终通过page对象获取相关数据
      在这里插入图片描述

    2.6 删除

    2.6.1 根据id删除记录

    在这里插入图片描述

    2.6.2 批量删除

    在这里插入图片描述

    2.6.3 简单条件删除

    在这里插入图片描述

    2.6.4 逻辑删除

    物理删除∶真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据
    逻辑删除︰假删除,将对应数据中代表是否被删除字段状态修改为"被删除状态”,之后在数据库中仍旧能看到此条数据记录;

    逻辑删除
    在表添加字段,作为逻辑删除标志,每次删除时候,修改标志位
    0 没有删除
    1 删除
    
    逻辑删除的使用场景∶
    1.可以进行数据恢复
    2.有关联数据,不便删除
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    逻辑删除具体步骤:

    1. 数据库修改:添加deleted字段
      表添加字段,对应实体 类添加属性,作为逻辑删除标志
      在这里插入图片描述
      在这里插入图片描述

    2. 在实体类逻辑删除属性添加注解
      在这里插入图片描述

    3. 添加自动填充
      在这里插入图片描述)

    4. 测试
      测试后发现,数据并没有被删除,deleted字段的值由0变成了1
      测试后分析打印的sql.语句,是一条update
      注意∶被删除前,数据的deleted字段的值必须是0,才能被选取出来执行逻辑删除的操作;

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

    2.7 条件查询

    Wrapper介绍:
    在这里插入图片描述

    Wrapper:条件构造抽象类,最顶端父类
    AbstractWrapper:用于查询条件封装,生成sql的where条件
    QueryWrapper:查询条件封装
    UpdateWrapperUpdate条件封装·
    AbstractLambdaWrapper:使用Lambda语法
    LambdaQueryWrapper:用于Lambda语法使用的查询Wrapper
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • ge【大于等于】、gt【大于】、le【小于等于】、lt【小于】
      在这里插入图片描述
    • eq【等于】、ne【不等于】
      在这里插入图片描述
    • between【在…区间之间】、notBetween【不在…区间之间】
      在这里插入图片描述
    • like【模糊查询】、notLike【不在模糊查询】、likeLeft【百分号在左】、likeRight【百分号在右】
      在这里插入图片描述
    • orderBy【排序】、orderByDesc【降序排列】、orderByAsc【升序排列】
      在这里插入图片描述
  • 相关阅读:
    [激光原理与应用-33]:典型激光器 -5- 不同激光器的全面、综合比较
    移动安全测试框架-MobSF WINDOWS 环境搭建
    Python做游戏很难吗—来看看我做的多有意思~
    tslib库的移植
    mybatis-plus实现乐观锁
    SystemVerilog Assertions应用指南 Chapter1.30 使用“ intersect”控制序列的长度
    生成模型的中Attention Mask说明
    内存管理(四)——虚拟内存
    用Python搭建一个猜数字小游戏
    PCL 点云库的安装和使用(win系统)
  • 原文地址:https://blog.csdn.net/weixin_49883619/article/details/126755149