后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok
一、什么是JDBC
JDBC就是sun公司研发的一套通过java来操控数据库的工具,对应不同的数据库系统有不同的JDBC,而他们统称【驱动】,这就是上一篇我们提到创建Mybatis项目时要引入的依赖、以及连接数据库四要素里的第一要素。


JDBC有自己一套原始的启动、运行代码,如下图(我没给出完整代码,因为不要去记,没有用)

不用了解,只要知道有这么个玩意就行
二、JDBC与Mybatis对比
JDBC代码又长又臭,而且连接数据库、sql语句执行、实体类封装......全都在一块屎代码里,不灵活,那么Mybatis的优势就显示出来了

然后Mybatis只需要关注这两部分:【数据库连接:application.properties】跟【mapper接口】

三、数据库连接池
1、什么是数据库连接池
一个数据库可以与其它多个客户端连接,那么用JDBC连接数据库的话就是谁跟它连接,就创建一个【连接】,等他执行完操作不用了,再把【连接】还回去,如此往复创建连接、释放连接;
而【数据库连接池】是有几个客户端要跟数据库连接,它就分配出几个【连接】,然后不在多余创建或释放,谁要用就拿去,用完还回来;哪怕有一个客户端连接了半天啥也不干,数据库连接池也会检测到,时间到了就拿回【连接】放回【数据库连接池】
2、数据库连接池产品
那么市面上的【数据库连接池】产品有很多,我们上一篇连接测试的时候,控制台最后两行就有显示,红色框住的地方就是一个叫 “Hikari” 的数据库连接池产品

常见有这么几个,我们默认的是Hikari
那个 “Druid” 其实是最好用的,是由阿里巴巴开发的,是java数据库连接池就好的产品

那么我们怎么去更换我们的产品?前面我们学过Maven知道,maven的强大之处就是直接在【pom.xml】代码里的【<dependencies></dependencies>】里加入你要的依赖包,然后更新一下,就可以自动下载配置了,那么【Druid】的依赖代码我放在下面,各位自行配置
<!--druid连接池-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version>
</dependency>

爆红是因为没有刷新、下载,点右上角刷新一下就行了
然后再运行就能看到Druid的数据库连接池已经更换成功

3、数据库连接池产品的标准接口:Datasource
那那么多产品,就得有一个标准接口来连接所有产品的数据库连接池
就是【Datasource】,是官方(sun)提供的数据库连接池接口,由第三方组织实现此接口
获取连接的代码是:
Connection getConnection() throws SQLException;
我们摁两下Shift,然后查找Hikari或者Druid的源码,就会看到它们都必须有【Datasource】这个接口


那么Druid德鲁伊的数据库连接池有两种属性配置
第一种是默认之前的四要素配置
第二种是在原基础上加上【.druid】,其实都一样的,以后看到这种代码不用疑惑,这两都可以

四、超级偷懒建实体类方法:lombok
我们前面为了连接数据库在java也建立了一个“数据库表”——JavaBean类,但是我们都知道一个JavaBean贼多代码,又臭又长
有的人会说,不是有快捷键 “Alt + Insert”自动生成构造函数跟setter、getter函数吗?那么看看lombok的代码你就会知道什么叫简约舒服

Lombok是一个实用的lava类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、tostring等方法,简化java开发、提高效率。
常见的注解有这些(黄色是常用的)
| 注解 | 作用 |
| @Getter/@Setter | 为所有的属性提供get/set方法 |
| @ToString | 会给类自动生成易阅读的 toString 方法 |
| @EqualsAndHashcode | 根据类所拥有的非静态字段自动重写 equals 方法和 hashcode 方法 |
| @Data | 提供了综合的各个方法的生成代码功能(@Getter+@Setter+@ToString+@EqualsAndHashCode) |
| @NoArgsConstructor | 生成无参的构造器 |
| @AllArgsConstructor | 生成除了static修饰的字段之外有参构造器 |
那怎么用?首先我们本来是没有lombok的,还是一样要到pom.xml去引入依赖

爆红是因为没有刷新、下载,点右上角刷新一下就行了
好,现在回到User类,拔出了属性以为所有方法注释了,不要了

然后现在在上面加上这些注解(注意,其实@Data = @Getter/@Setter + @ToString + @EqualsAndHashcode ,所以写一个@Data就够了,但是有参构造和无参构造还是得另外用别的两个注解)

然后现在回到test的测试类里,测试user.能发现有了提示,User的所有getter、setter、构造函数啥的都出来了

但是这里运行时有个问题:

那么回到最前面的问题,配置lombok依赖那里,因为我说跟着黑马的视频来的,所以踩坑了,黑马说springboot帮我们指定了lombok的版本(version),但是!!有个前提条件是可能他的JDK版本刚好跟springboot指定的lombok版本适配,而我们的版本不适配!!!
那就必须要手动强制升级更新一下lombok的版本


你们可以按我这个版本试试,不行的话再把报错信息发给ai问一下,试试别的版本行不行
我这个现在就成功了

另外,如果你用的是远古时期的idea,那么还请手动下载安装lombok插件,新版本的不需要

下一篇讲案例:Mybatis基础操作
相关文章:
后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok
一、什么是JDBC JDBC就是sun公司研发的一套通过java来操控数据库的工具,对应不同的数据库系统有不同的JDBC,而他们统称【驱动】,这就是上一篇我们提到创建Mybatis项目时要引入的依赖、以及连接数据库四要素里的第一要素。 JDBC有自己一套原始…...
零基础入门怎么学习老挝语字母表?《老挝语翻译通》App真人发音教学,学习老挝语字母发音和词汇句子!
这段老挝文字翻译成中文是什么意思?有什么好用的老挝语翻译工具推荐吗? 快速翻译:中老语言无缝转换,实时翻译,让沟通更流畅。 学习工具:零基础入门到流利对话,老挝语真人发音,让你的…...
linux深度deepin基于rsync和apt-mirror同步软件源及构建本地内网源
目录 一、rsync方式二、apt-mirror方式1.安装apt-mirror2.配置apt-mirror(/etc/apt/mirror.list)3.新建存放目录开始下载 3.发布mirror站点 一、rsync方式 参考官方文档地址: https://www.deepin.org/index/docs/wiki/05_HOW-TO/08_%E9%95%9C%E5%83%8F%E5%8A%A0%E9%…...
场景管理分析平台介绍
在数字化浪潮的推动下,数据已成为企业决策的重要依据。特别是在智能驾驶、虚拟现实和物联网等领域,场景数据的高效管理和利用至关重要。在智能驾驶领域面对海量的场景数据,如何高效处理、精准分析,并将其转化为有价值的决策支持&a…...
SQL Server和Oracle数据库的实时同步
数据同步在大数据应用中扮演着关键角色,它确保了数据的实时性和一致性,为数据分析和决策提供了重要支持。常见的数据同步方式包括ETL实时同步和实时ETL工具,后者可以基于日志追踪或触发器进行分类。不同的数据库系统针对实时同步也有各自的实…...
Python中使用Oracle向量数据库实现文本检索系统
Python中使用Oracle向量数据库实现文本检索系统 代码分析 在本文中,我们将深入分析一个使用Oracle向量数据库实现文本检索系统的Python代码,并基于相同的技术生成一个新的示例。这个系统允许我们存储文档及其嵌入向量,并执行相似性搜索。 代码分析 让我们逐步分析原始代码的主…...
java考试题20道
选择题 编译Java源代码文件的命令是javac javac命令是将Java源代码文件进行编译得到字节码文件(.class文件) java命令是在JVM上运行得到的字节码文件 下面是一个示例: javac test.java -------> test.class java test ------> 运行test.class文件下列那…...
云仓的优势体现在哪里?
云仓,即云仓储,是一种基于互联网和大数据技术的新型仓储管理模式。它通过高度的信息化、自动化和集成化管理模式,为企业提供高效、灵活、智能的仓储解决方案。云仓的优势主要体现在以下几个方面: ———————————————…...
github 设置中文,亲测有效
点进去 安装 选上面第二个,不行再选第一个 GitHub - maboloshi/github-chinese: GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese)...
Spring容器生命周期中如前置运行程序和后置运行程序
在Spring容器加入一个实现了BeanPostProcessor接口bean实例,重写postProcessBeforeInitialization、postProcessAfterInitialization方法,在方法里面写具体的实现,从而达到Spring容器在初如化前或销毁时执行预定的程序,方法如下&a…...
C++ 现代教程二
线程支持库 - C中文 - API参考文档 GitHub - microsoft/GSL: Guidelines Support Library Fluent C:奇异递归模板模式(CRTP) - 简书 #include <thread> #include <iostream> #include <unordered_map> #include <futu…...
JavaScript函数闭包解析
一、什么是闭包 JavaScript中的函数闭包是指函数可以访问其父级作用域中的变量,即使函数在父级作用域外被调用。闭包可以获取和修改其父级作用域中的变量,即使父级作用域已经被销毁。 在JavaScript中,当一个函数被定义时,它会创…...
STM32MP135裸机编程:使用软件触发硬件复位
0 参考资料 STM32MP13xx参考手册.pdf 1 使用寄存器实现软件复位 1.1 复位电路概述 重点关注下面标红的路线: 通过这条路线可以清楚看到,我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL(复位脉冲控制器)给NRST(硬件复…...
【饼图交通方式】用ECharts的graphic配置打造个性化
利用ECharts的graphic配置打造个性化图表 内容概要 ECharts是一款强大的数据可视化工具,它提供了丰富的配置选项来定制图表。本文将重点介绍graphic配置的使用,展示如何通过在饼图中添加个性化的图形元素,例如中心图像,来增强图…...
大模型学习笔记3【大模型】LLaMA学习笔记
文章目录 学习内容LLaMALLaMA模型结构LLaMA下载和使用好用的开源项目[Chinese-Alpaca](https://github.com/ymcui/Chinese-LLaMA-Alpaca)Chinese-Alpaca使用量化评估 学习内容 完整学习LLaMA LLaMA 2023年2月,由FaceBook公开了LLaMA,包含7B࿰…...
工程师 - 什么是SMP
什么是 SMP(对称多处理)? What is SMP (symmetric multiprocessing)? 对称多处理(SMP,symmetric multiprocessing)是由多个处理器完成的计算机处理过程,这些处理器共享一个操作系统࿰…...
Webpack: 并行构建
概述 受限于 Node.js 的单线程架构,原生 Webpack 对所有资源文件做的所有解析、转译、合并操作本质上都是在同一个线程内串行执行,CPU 利用率极低,因此,理所当然地,社区出现了一些以多进程方式运行 Webpack࿰…...
Vue的介绍与使用
1.Vue的介绍 内容讲解 【1】Vue介绍 1.vue属于一个前端框架,底层使用原生js编写的。主要用来进行前端和后台服务器之间的一个交互。 2.Vue是一套构建用户界面的渐进式前端框架。 “渐进式框架”简单的来说你可以将Vue作为你的应用一部分嵌入其中,代理…...
MYSQL双主双从,使用Keepalived双机热备+LVS高可用群集
MYSQL双主双从,使用Keepalived双机热备LVS高可用群集 文档只记录KeepalivedLVSmysql主从,不包含检验,如需检验,请自行添加web服务器 一、IP规划 服务器IP备注master1192.168.100.131master2的从master2192.168.100.132maste…...
9.计算机视觉—目标检测
目录 1.物体检测边缘框目标检测数据集总结边缘框代码实现2.锚框:目标检测的一种方法IoU—交并比赋予锚框标号使用非极大值抑制(NMS)输出总结代码实现1.物体检测 边缘框 一个边缘框可以通过四个数字定义 (左上x,左上y),(右下x,右下y)(左上x,左上y,宽,高)(中间x,中间y…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
