【黑马程序员】SSM框架——MyBatisPlus

news2025/1/13 10:15:29

文章目录

  • 前言
  • 一、MyBatisPlus 简介
    • 1. 入门案例
      • 1.1 创建新模块
      • 1.2 选择需要的技术集
      • 1.3 添加 mp 起步依赖
      • 1.4 设置 Jdbc 参数
      • 1.5 实体类与表结构
      • 1.6 定义数据接口
      • 1.7 测试功能
    • 2. MyBatisPlus 概述
    • 3. MyBatisPlus 特性
  • 二、标准数据层开发
    • 1. 标准数据层 CRUD 功能
      • 1.1 Lombok
      • 1.2 常用注解
        • @Data
    • 2. 分页功能
      • 2.1 MP 分页查询功能
        • ① 设置分页拦截器
        • ② 执行分页查询
      • 2.2 开启 MyBatisPlus 日志
  • 三、DQL 控制
    • 1. 条件查询方式
      • 1.1 条件查询
      • 1.2 条件添加方式
        • 1.2.1 常规格式
          • ① 常规格式
          • ② 链式格式
        • 1.2.2 lambda 格式
          • ① lambda 格式
          • ② lambda 格式
      • 1.3 组合查询条件
        • 1.3.1 并且(and)
        • 1.3.2 或者(or)
      • 1.4 null 值处理
        • 1.4.1 if 语句控制条件追加
        • 1.4.2 条件参数控制
          • ① 常规格式
          • ② 链式格式
    • 2. 查询投影
    • 3. 查询条件设置
      • 3.1 eq 匹配
      • 3.2 范围匹配
      • 3.3 like 匹配
      • 3.4 分组查询聚合函数
    • 4. 字段映射与表名映射
      • 4.1 常见注解
        • @TableField
        • @TableName
  • 四、DML 控制
    • 1. id 自增策略控制(Insert)
      • 1.1 id 生成策略控制
        • 1.1.1 常见注解
          • @ TableId
      • 1.2 全局设置
        • 1.2.1 id 生成策略全局配置
        • 1.2.2 表名前缀全局配置
    • 2. 多数据操作(Delete、Select)
    • 3. 逻辑删除(Delete / Update)
      • 3.1 逻辑删除开发步骤
        • ① 添加逻辑删除标记字段
        • ② 实体类中添加对应字段
        • ③ 配置逻辑删除字面值
    • 4. 乐观锁(Update)
      • 4.1 乐观锁开发步骤
        • ① 添加锁标记字段
        • ② 实体类添加对应字段
        • ③ 配置乐观锁拦截器
        • ④ 使用乐观锁机制
  • 五、快速开发
    • ① 导入坐标
    • ② 核心代码
    • ③ 数据源指定
    • ④ 全局配置指定
    • ⑤ 包相关配置
    • ⑥ 策略配置
  • 总结


前言

跟着B站的黑马程序员学习SSM框架,语言为java,目前是第三个学习内容
课程传送门:SSM框架——MyBatisPlus


一、MyBatisPlus 简介

1. 入门案例

1.1 创建新模块

在这里插入图片描述

1.2 选择需要的技术集

在这里插入图片描述

1.3 添加 mp 起步依赖

在这里插入图片描述

1.4 设置 Jdbc 参数

在这里插入图片描述

1.5 实体类与表结构

在这里插入图片描述

1.6 定义数据接口

在这里插入图片描述

1.7 测试功能

在这里插入图片描述

2. MyBatisPlus 概述

  • MyBatisPlus(简称 MP)是基于 MyBatis 框架基础上开发的增强型工具,旨在简化开发、提高效率
  • 官网:点击前往

3. MyBatisPlus 特性

  • 无侵入:只做增强不做改变,不会对现有工程产生影响
  • 强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表操作 CRUD 操作
  • 支持 Lambda:编写查询条件无需担心字段写错
  • 支持主键自动生成
  • 内置分页插件

二、标准数据层开发

1. 标准数据层 CRUD 功能

在这里插入图片描述

1.1 Lombok

在这里插入图片描述

1.2 常用注解

@Data

在这里插入图片描述

2. 分页功能

在这里插入图片描述

2.1 MP 分页查询功能

① 设置分页拦截器

在这里插入图片描述

② 执行分页查询

在这里插入图片描述

2.2 开启 MyBatisPlus 日志

在这里插入图片描述

三、DQL 控制

1. 条件查询方式

1.1 条件查询

在这里插入图片描述

1.2 条件添加方式

1.2.1 常规格式
① 常规格式

在这里插入图片描述

② 链式格式

在这里插入图片描述

1.2.2 lambda 格式
① lambda 格式

在这里插入图片描述

② lambda 格式

在这里插入图片描述

1.3 组合查询条件

1.3.1 并且(and)

在这里插入图片描述

1.3.2 或者(or)

在这里插入图片描述

1.4 null 值处理

1.4.1 if 语句控制条件追加

在这里插入图片描述

1.4.2 条件参数控制
① 常规格式

在这里插入图片描述

② 链式格式

在这里插入图片描述

2. 查询投影

在这里插入图片描述

3. 查询条件设置

传送门:点击前往

3.1 eq 匹配

在这里插入图片描述

3.2 范围匹配

在这里插入图片描述

3.3 like 匹配

在这里插入图片描述

3.4 分组查询聚合函数

在这里插入图片描述

4. 字段映射与表名映射

  • 问题一:表字段与编码属性设计不同步
    在这里插入图片描述
    注解的使用:
    在这里插入图片描述

  • 问题二:编码中添加了数据库中未定义的属性
    在这里插入图片描述注解的使用:
    在这里插入图片描述

  • 问题三:采用默认查询开放了更多的字段查看权限
    在这里插入图片描述注解的使用:
    在这里插入图片描述

  • 问题四:表名与编码开发设计不同步
    在这里插入图片描述注解的使用:
    在这里插入图片描述

4.1 常见注解

@TableField

在这里插入图片描述

@TableName

在这里插入图片描述

四、DML 控制

1. id 自增策略控制(Insert)

1.1 id 生成策略控制

  • 不同的表应用不同的 id 生成策略:
    ① 日志:自增(1,2,3,4,…)
    ② 购物订单:特殊规则(FQ23948AK3843)
    ③ 外卖单:关联地区日期等信息(10 04 20200314 34 91)
    ④ 关系表:可省略 id
    ⑤ …

在这里插入图片描述

1.1.1 常见注解
@ TableId

在这里插入图片描述

1.2 全局设置

1.2.1 id 生成策略全局配置

在这里插入图片描述

1.2.2 表名前缀全局配置

在这里插入图片描述

2. 多数据操作(Delete、Select)

在这里插入图片描述

3. 逻辑删除(Delete / Update)

在这里插入图片描述

3.1 逻辑删除开发步骤

① 添加逻辑删除标记字段

在这里插入图片描述

② 实体类中添加对应字段

在这里插入图片描述

③ 配置逻辑删除字面值

在这里插入图片描述

4. 乐观锁(Update)

4.1 乐观锁开发步骤

① 添加锁标记字段

在这里插入图片描述

② 实体类添加对应字段

在这里插入图片描述

③ 配置乐观锁拦截器

在这里插入图片描述

④ 使用乐观锁机制

在这里插入图片描述

五、快速开发

① 导入坐标

在这里插入图片描述

② 核心代码

在这里插入图片描述

③ 数据源指定

在这里插入图片描述

④ 全局配置指定

在这里插入图片描述

⑤ 包相关配置

在这里插入图片描述

⑥ 策略配置

在这里插入图片描述


总结

以上就是本章要讲的内容,本文仅仅简单复述了老师讲课的文本内容,内容有误麻烦联系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Educational Codeforces Round 157 (Rated for Div. 2) D. XOR Construction (思维题)

题目 给定长为n-1(n<2e5)的整数序列a&#xff0c;第i个数a[i](0<a[i]<2n) 构造一个长为n的整数序列b&#xff0c;满足&#xff1a; 1. 0到n-1在b数组中每个数恰好出现一次 2. 对于&#xff0c; 题目保证一定有解&#xff0c;有多组时可以输出任意一组 思路来源 …

腾讯云CVM服务器操作系统镜像大全

腾讯云CVM服务器的公共镜像是由腾讯云官方提供的镜像&#xff0c;公共镜像包含基础操作系统和腾讯云提供的初始化组件&#xff0c;公共镜像分为Windows和Linux两大类操作系统&#xff0c;如TencentOS Server、Windows Server、OpenCloudOS、CentOS Stream、CentOS、Ubuntu、Deb…

图及谱聚类商圈聚类中的应用

背景 在O2O业务场景中&#xff0c;有商圈的概念&#xff0c;商圈是业务运营的单元&#xff0c;有对应的商户BD负责人以及配送运力负责任。这些商圈通常是一定地理围栏构成的区域&#xff0c;区域内包括商户和用户&#xff0c;商圈和商圈之间就通常以道路、河流等围栏进行分隔。…

Java连接Redis并操作Redis中的常见数据类型

目录 一. Java连接Redis 1. 导入依赖 2. 建立连接 二. Java操作Redis的常见数据类型存储 1. Redis字符串(String) 2. Redis哈希(Hash) 3. Redis列表&#xff08;List&#xff09; 4. Redis集合&#xff08;Set&#xff09; 一. Java连接Redis 1. 导入依赖 pom依赖…

Linux--线程-条件控制实现线程的同步

1.条件变量 条件变量是线程另一可用的同步机制。条件变量给多个线程提供了一个会合的场所。条件变量与互斥量一起使用时&#xff0c;允许线程以无竞争的方式等待特定的条件发生。 条件本身是由互斥量保护的。线程在改变条件状态前必须首先锁住互斥量&#xff0c;其他线程在获…

基于STM32HAL库(独立看门狗)-简述

目录 概述 一、开发环境 二、STM32CubeMx配置 三、编码 四、运行结果 五、总结 概述 一个成熟靠谱的项目&#xff0c;离不开“看门狗”的必选项&#xff0c;凡是人写的程序多少都会有出现bug的情况&#xff08;或芯片外设受外界干扰导致故障程序卡死、跑飞的情况&#xf…

第二阶段第一章——面向对象

前言 学习了这么久Python&#xff08;呃其实也没多久差不多两周&#xff09;&#xff0c;可能有小伙伴说我废了&#xff0c;两周才学这么点&#xff0c;咋说呢&#xff0c;我曾经也是急于求成&#xff0c;做任何事情都是急于求成&#xff0c;比如我喜欢一个人我就想马上跟她在…

14 _ 排序优化:如何实现一个通用的、高性能的排序函数?

几乎所有的编程语言都会提供排序函数,比如C语言中qsort(),C++ STL中的sort()、stable_sort(),还有Java语言中的Collections.sort()。在平时的开发中,我们也都是直接使用这些现成的函数来实现业务逻辑中的排序功能。那你知道这些排序函数是如何实现的吗?底层都利用了哪种排…

网络攻击的威胁仍在上升、企业该如何解决

近十年来&#xff0c;网络攻击的频率和规模不断增加&#xff0c;对网站和在线资产构成了严重威胁。解决网站被攻击的问题需要采用多层次的安全策略&#xff0c;其中CDN&#xff08;内容分发网络&#xff09;的防护角度发挥了关键作用。本文将通过通俗易懂的方式从CDN的角度分析…

Python语言_matplotlib包_共80种--全平台可用

Python语言_matplotlib包_共80种–全平台可用 往期推荐&#xff1a; Python语言_single_color_共140种–全平台可用 R语言_RColorBrewer包–全平台可用 R语言gplots包的颜色索引表–全平台可用 R语言中的自带的调色板–五种–全平台可用 R语言657中单色colors颜色索引表—全平台…

6 从物理层到MAC层

1、实现局域网中玩游戏 在早期的80后的大学宿舍中&#xff0c;组件一个宿舍的局域网&#xff0c;以便于宿舍内部可以玩游戏. 第一层&#xff08;物理层&#xff09; 1.首先是实现电脑连接电脑&#xff0c;需要依靠网线&#xff0c;有两个头。 2.一头插在一台电脑的网卡上&am…

要做一名成功的测试,首先得会想?

近在做测试时&#xff0c;突然想到了这么个问题——在测试的过程中对某个功能想得越开&#xff0c;测试就完整&#xff0c;就越彻底&#xff01; 当然我们在产生与该功能相关的想象时&#xff0c;其中最关键的是不能脱离需求&#xff0c;不能脱离该软件本身&#xff1b;不然这…

前端的几种网络请求方式

网络请求 node编写接口 这里用到的几个包的作用 express&#xff1a;基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架&#xff0c;官网&#xff1a;https://www.expressjs.com.cn/cors&#xff1a;用来解决跨域问题body-parser&#xff1a;可以通过 req.body…

Unity中Shader的GI的间接光实现

文章目录 前言一、GI中 间接光照的实现1、看Unity的源码可知&#xff0c;在计算GI的间接光照时&#xff0c;最主要的实现是在UnityGI_Base函数中 二、分析 UnityGI_Base 中实现的功能1、ResetUnityGI的作用2、第一个#if中实现的功能&#xff1a;计算在Distance Shadowmask 中实…

网络资料(忘传了)

1网络分层模型和应用协议 1.1分层模型 1.1.1分层的意义 当遇到一个复杂问题的时候&#xff0c;可以使用分层的思想把问题简单化 比如&#xff0c;你有半杯82年的可乐&#xff0c;想分享给你的朋友王富贵&#xff0c;但你们已经10年没有联系了。要完成这件事&#xff0c;你可…

JavaScript引用数据类型(对象类型)和原始(基本)数据类型特点比较

JavaScript引用数据类型&#xff08;对象类型&#xff09;和原始&#xff08;基本&#xff09;数据类型特点比较 为讲解JavaScript引用数据类型&#xff08;对象类型&#xff09;和原始&#xff08;基本&#xff09;数据类型特点比较&#xff0c;需要先回顾JavaScript数据类型…

UE5——源码阅读——3——引擎退出

这边主要是做了个标记&#xff0c;为了UE的性能分析 把全局运行设置为0&#xff0c;把日志也设置为空 判断预加载屏幕 关闭visual logger 关闭资源编译的管理器 引擎预退出 预退出的核心代理 关闭网络追踪 关闭所有电影场景的捕捉接口 关闭UE中用于MID的缓存 关闭引擎…

哆啦百宝箱APP

专门为年轻人设计的APP&#xff0c;主打的免费、无恶心广告、不获取任何个人信息。 哆啦百宝箱 ● 永久免费 ● 无恶心广告 ● 种类巨多 ● 全民参与 ● 爆款功能 ● 用心创造 哆啦百宝箱 提供了从日常、图片、查询、设备、趣味、娱乐等多方面的功能&#xff0c; 操作简单&a…

postMessage

A:端口3000 import React, { useEffect } from react;function App() {useEffect(() > {const childWindow document.getElementById(child).contentWindow;const sendMessageToChild () > {childWindow.postMessage("主页面消息", "http://localhost:…