Mybatis-Plus学习|快速入门CRUD、主键生成策略(雪花算法、主键自增等)、自动填充、乐观锁、分页插件、逻辑删除

MyBatisPlus概述

为什么要学习它呢?MyBatisPlus可以节省我们大量工作时间,所有的CRUD代码它都可以自动化完成!

JPA、tk-mapper、MyBatisPlus
偷懒的!

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

特性

快速入门

地址:https://mp.baomidou.com/guide/quick-start.html#初始化工程
使用第三方组件:

步骤

创建一个数据库、数据表

并且插入一些测试数据

编写项目,初始化项目!使用SpringBoot初始化!

1、导入对应的依赖

导入相关依赖

说明:我们使用 mybatis-plus 可以节省我们大量的代码,尽量不要同时导入 mybatis 和 mybatis-plus!版本的差异!

2、配置

5、连接数据库!这一步和 mybatis 相同!

idea连接数据库

输入数据库账号密码测试连通

选择连接的数据库

3、编写代码

先根据数据库表中的字段编写实体类

编写Mapper层,注解也可用@mapper,至此,所有crud操作已经自动编写完成

在启动类上加入扫描mapper文件夹的注解

编写测试代码,调用相应的查询操作

思考

1、SQL谁帮我们写的?MyBatis-Plus 都写好了
2、方法哪里来的? MyBatis-Plus 都写好了

配置日志

我们所有的sql现在是不可见,,我们希望知道它是怎么执行的,所以我们必须要看日志!

配置完毕日志之后,后面的学习就需要注意这个自动生成的SQL,你们就会喜欢上 MyBatis-Plus!

CRUD扩展

测试插入

主键生成策略

分布式系统唯-id生成:https://www.cnblogs.com/haoxinyue/p/5208136.html

雪花算法

snowflake是Twitter开源的分布式ID生成算法,结果是一个Long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0。可以保证几乎全球唯一!

MP提供的主键生成策略有如下几种

默认不配的情况下是雪花算法即如下所示,如果要修改主键生成策略,需要用到如下的@TableId注解修改生成方式


主键自增

实体类字段上 @TableId(type = IdType.AUTO)

数据库字段一定要是自增!

测试更新

MP的强大之处在于,我们通过给这个user对象设置不同的更改值,它会自动完成一个动态的sql语句拼接

自动填充

创建时间、修改时间!这些个操作一遍都是自动化完成的,我们不希望手动更新!
阿里巴巴开发手册:所有的数据库表:gmt_create、gmt_modified几乎所有的表都要配置上!而且需要自动化!

第一种方式:数据库级别(工作中不允许你修改数据库)

在数据库中设置这两个字段,默认值为当前时间,更新时间在更新的时候自动更新

再次测试插入方法,我们需要先把实体类同步!实体类加入这两个属性

第二种方式:代码级别

1、删除数据库的默认值、更新操作!

2、实体类字段属性上需要增加注解

创建时间在插入的时候自动填充,更新时间在插入和更新操作的时候自动填充

3.创建一个Handler实现MetaObjectHandler接口,重写两个方法,配置好在插入、更新操作时要自动填充的字段内容

乐观锁

在面试过程中,我们经常会被问道乐观锁,悲观锁!这个其实非常简单!
乐观锁:故名思意十分乐观,它总是认为不会出现问题,无论干什么不去上锁!如果出现了问题,再次更新值测试

悲观锁:故名思意十分悲观,它总是认为总是出现问题,无论干什么都会上锁!再去操作!我们这里主要讲解 乐观锁机制!

乐观锁实现方式:
。取出记录时,获取当前 version
。更新时,带上这个version
执行更新时,set version=newVersion where version=oldVersion
。如果version不对,就更新失败

给数据库中增加version字段!

2、我们实体类加对应的字段

新建一个MP的配置类,将我们之前在主启动类上扫描mapper的注解也剪切过来,在这个类中注册乐观锁插件

测试乐观锁

可以看到,最后一条更新语句没有执行,因为version版本已经在第一次更新时发生了改变

测试查询

可以根据id去查单个数据,也可通过一个id的列表来查询多个数据

也可以自定义查询,传入map查询

分页查询

分页在网站使用的十分之多!
1、原始的 limit 进行分页
2、pageHelper 第三方插件
3、MP 其实也内置了分页插件!

1、配置拦截器组件即可

在MP配置文件中注册分页插件

2、直接使用Page对象即可!

测试删除

可以通过id删除单个数据,也可通过id的列表批量删除数据

也可通过map自定义删除数据

逻辑删除

物理删除:从数据库中直接移除
逻辑删除:再数据库中没有被移除,而是通过一个变量来让他失效! deleted=0=> deleted=1

管理员可以查看被删除的记录!防止数据的丢失,类似于回收站!
测试一下:
1、在数据表中增加一个 deleted 字段,默认值为0

2、实体类中增加这个属性

3、配置

在MP配置类中注册逻辑删除组件

在properties文件中进行配置,删除默认值为1,不删除默认值为0

测试逻辑删除

可以看到在我们根据id删除数据时,不是删除sql,而是执行了更新sql,默认在其后追加了删除条件,逻辑删除字段为0的数据,设置了这个字段值更改为1,代表这个数据删除成功

我们在以后得查数据中,都会看到默认增加了条件,逻辑删除字段为0,才可查出

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于JSP的列车票务信息管理系统

开头语: 你好,我是专注于计算机科学与技术研究的学长。如果你对列车票务信息管理系统感兴趣或有相关需求,欢迎联系我。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:IDE、数据库管理工具…

spring boot jar 启动报错 Zip64 archives are not supported

spring boot jar 启动报错 Zip64 archives are not supported 原因、解决方案问题为什么 spring boot 不支持 zip64zip、zip64 功能上的区别zip 的文件格式spring-boot-loader 是如何判断是否是 zip64 的? 参考 spring boot 版本是 2.1.8.RELEASE,引入以…

HBDNY-40/1端子排电压继电器 DC110V 导轨安装 约瑟JOSEF

HBDNY系列端子排型电压电流继电器 系列型号:(3、4过/低电压型,5、6过/低电流型) HBDNY-30/1端子排型电压继电器;HBDNY-30/2端子排型电压继电器; HBDNY-30/3端子排型电压继电器;HBDNY-30/4端子…

摩柏BI,轻松实现word报告自动更新

|| 导语 告别手工!在数字化办公的今天,高效、准确的数据处理能力已经成为职场人士必备的技能之一。尤其是对于财务分析师、市场研究员和管理人员,他们需要处理的报告不仅数量庞大,而且对数据的准确性和实时性要求极高。传统WORD报…

python爬虫需要什么HTTP代理?

用来爬虫的话,还是建议用高匿名代理,但显然题主用了高匿名代理还是出现了一部分问题,我们可以先找到问题关键再解决它,一般爬虫用了高匿名代理出现被封会有以下几种原因: 1.代理IP的质量不过关 一般来说每个网站都有…

解锁小红书新玩法:中小企业出海营销的集成策略

随着全球数字化浪潮的推进,小红书作为生活方式分享平台的崛起,为中小企业提供了一个全新的营销舞台。NetFarmer,作为专注于企业数字化出海的服务商,深谙小红书的营销策略,并致力于通过HubSpot产品销售与实施&#xff0…

HarmonyOS应用开发学习经验

一、HarmonyOS学习官网 开发者能力认证 HarmonyOS应用开发者基础认证6月之前的学习资源官网已经关闭过期,大家不要慌,官方更新了最新资源,但是,对于之前没有学习完的学员不友好,存在知识断片的现象,建议官…

微型导轨:手术机器人的高精度“骨骼”

微型导轨精度高,摩擦系数小,自重轻,结构紧凑,被广泛应用在医疗器械中,尤其是在手术机器人中的应用,通过手术机器人,外科医生可以远离手术台操纵机器人进行手术。可以说,是当之无愧的…

C语言实现:贪心算法

算法基础原理 贪心算法是一种在求解问题时,总是做出在当前看来是最好的选择的算法。它不从整体最优上进行考虑,而是通过每一步的局部最优选择,希望达到全局的最优解. 贪心算法的特点:贪心算法在每一步都选择当前状态下的最优解,即…

SSH的基本使用

文章目录 1. SSH使用介绍2. 如何配置OpenSSH Client和OpenSSH Server2.1 Windows系统配置2.2 Linux系统配置2.2.1. 安装OpenSSH服务2.2.2. 启动和检查SSH服务 3. SSH具体使用方式4. vscode中使用ssh远程连接 1. SSH使用介绍 SSH 最常见的用途是通过加密连接在不安全的网络中进…

fiddler抓https包

1,安装fiddler省略 2,下载证书步骤:tools-options-https 点击确认,点击OK,点击是 把证书安装到谷歌浏览器上步骤:点击谷歌浏览器右上角的设置,在搜索框中搜索证书,点击“证书管理”…

常见的排序算法【总结】

目录 排序的基本概念与分类排序的稳定性内排序与外排序简单排序冒泡排序时间复杂度: O ( n 2 ) O(n^2) O(n2) 简单选择排序排序原理:时间复杂度: O ( n 2 ) O(n^2) O(n2) 插入排序排序原理:时间复杂度: O ( n 2 ) O(n^…

MFC GDI绘制卡通人物

文章目录 主要代码完整visual studio工程下载 主要代码 // DrawFrogView.cpp : implementation of the CDrawFrogView class //#include "stdafx.h" #include "DrawFrog.h"#include "DrawFrogDoc.h" #include "DrawFrogView.h"#inclu…

让TSN DDS运转起来——面向智能汽车的以太网测试解决方案

概述 作为OPEN联盟和AUTOSAR联盟的核心成员,经纬恒润多年来持续为国内外各大OEM和供应商提供车载以太网相关的咨询服务,涵盖TCP/IP、SOME/IP、DDS、诊断、TSN等前沿技术领域的设计和测试。同时,经纬恒润与行业内的合作伙伴紧密合作&#xff0…

Vulnhub靶场DC-4练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 爆破登录2. 命令执行3. 反弹shell4. hydra爆破ssh5. 提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-4.zip 介绍: DC-4 is another purposely built …

【精品案例】数字孪生技术与数字工厂案例(59页PPT)

引言:随着工业4.0和智能制造的快速发展,数字孪生技术和数字工厂已成为制造业转型升级的重要趋势。数字孪生技术通过构建虚拟的数字模型,实现对物理实体全生命周期的映射与仿真,为企业的产品研发、设计、制造等提供有力支持。而数字…

如何评估SD-WAN专线带宽、确保网络性能

网络带宽的充足与否直接关系到业务的正常运作和用户的使用体验。为了确保最佳效果,SD-WAN专线的带宽需要根据企业的规模和具体网络需求进行详细评估。评估过程中需充分考虑实时应用、用户数量、分支机构间的连接以及业务特点。本文将探讨以下问题:SD-WAN…

基于Java的4S店车辆管理系统

你好,我是计算机专业的毕业生,很高兴与您分享我的毕业设计。 开发语言:Java 数据库:MySQL 技术:Java、SpringBoot、B/S模式 工具:MyEclipse、MySQL 系统展示 首页 个人中心 销售员管理界面 车辆维修管…

Ubuntu安装NVIDIA驱动

目录 安装gcc 安装NVIDIA驱动 检查nvidia显卡型号 根据显卡型号下载对应的驱动 安装命令 如何卸载 安装gcc 安装显卡驱动需要使用gcc,输入命令检查是否有gcc gcc --version 如果有版本号弹出,说明已经有gcc环境了,没有的则运行以下…

【Docker】存储数据卷

目录 1、挂载数据卷到容器里 2、查询挂载文件 3、容器与主机之间映射共享卷 4、三个容器之间使用共享卷 5、卷数据的备份与恢复 5.1 备份 5.2 恢复 1、挂载数据卷到容器里 docker run -itd --name test02 -v /data nginx docker exec -it test02 bashls / docker inspe…