后端之路第三站(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基础操作

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

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

相关文章

应用案例 | 如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全

一、货物运输 不同种类的货物对运输的要求不同&#xff0c;钢铁、煤炭、矿石等大宗物资通常对运输要求较低&#xff0c;而电子产品、IT 产品、家电等高价值敏感类货物则更强调运输的安全性和时效性&#xff0c;往往希望能尽可能安全和快速送达这类货物&#xff0c;使之尽快进入…

使用nvm命令进行node和npm版本下载以及切换

下载以及安装nvm方式 https://blog.csdn.net/ppz8823/article/details/130862191 1.查看nvm版本 nvm -v2.查看node 和 npm版本 node -v npm -v3.使用nvm查看已下载的node版本 nvm ls4.使用nvm 查看可使用的在线node版本 nvm list available4.下载想要使用的node版本&#x…

探索 LLMs 在数据标注中的应用潜力:观察、思考与前景展望

编者按&#xff1a; 目前&#xff0c;LLMs 在机器翻译、文本生成、多轮问答等任务上已表现得非常出色了。人们开始思考它们是否也可以用于数据标注工作。数据标注是训练和评估各种机器学习模型的基础&#xff0c;一直是一项昂贵且耗时的工作。是否能够借助 LLMs 的强大能力来为…

OpenAI将终止对中国提供服务,国内模型接棒

说起来&#xff0c;OpenAI自始至终就没有对中国提供过服务&#xff0c;OpenAI官方支持的国家和地区&#xff1a;https://platform.openai.com/docs/supported-countries 列表里面没有“Chinese”的选项&#xff0c;那为什么又要明令禁止呢&#xff0c;国类IT高手们&#xff0…

来给大家推荐得10个有效磁力导航链接(好用搜资料找资源)

都2024现在网上找资源像流水得鱼一样&#xff0c;抓一大把结果很难吃&#xff0c;我通宵特意整理的网站&#xff0c;网上有许多磁力导航网站可以提供海量的磁力链接资源&#xff0c;以下是一些有效的磁力导航网站推荐&#xff1a; 磁力搜索 网站地址&#xff1a;www.chiliso…

我国氮化硼市场规模逐渐扩大 市场集中度有望不断提升

我国氮化硼市场规模逐渐扩大 市场集中度有望不断提升 氮化硼&#xff08;BN&#xff09;俗称为白石墨&#xff0c;是由硼原子和氮原子所构成的一种晶体材料&#xff0c;在常温条件下多表现为一种棕色或暗红色晶体。氮化硼具有导热性好、硬度大、熔点高、抗化学侵蚀性等优点&…

flex 与 overflow 冲突

问题场景&#xff1a; 父盒子高度会变化&#xff0c;可能会比子盒子大&#xff0c;也可能会比子盒子小。 比子盒子大的时候&#xff0c;希望子盒子垂直居中&#xff1b;比子盒子小的时候&#xff0c;能够正常滚动&#xff1b; <body><div class"outer">…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第49课-机器人自动跳舞

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第49课-机器人自动跳舞 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

vscode下无法识别node、npm的问题

node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 因为node是在cmd安装的&#xff0c;是全局安装的&#xff0c;并不是在这个项目里安装的。 解决方案&#xff1a; 1.在vscode的控制台&#xff0c;针对一个项目安装特定版本的node&#xff1b; 2.已经…

SAP标准报表 S_ALR_8701XXXX是没有export to excel的 或者禁用 %PC也禁用了,如何开回来

以 s_alr_87012172为例子 系统-状态 进入程序 搜索 XXL 做下替换

手动将jar包导入本地Maven仓库

1、进入存放jar包的目录&#xff0c;可以先放进仓库底下 2、cmd回车 3、执行命令&#xff0c;看到BUILD SUCCESS就是成功了 -DgroupId、-DartifactId、-Dversion、-Dfile记得换成自己对应的 mvn install:install-file -DgroupIdcom.github.03 -DartifactIdonvif -Dversion1.0…

docker部署ClamAV集成java和python实现文件病毒扫描

介绍 官方文档&#xff1a;https://docs.clamav.net/manual/Signatures/DatabaseInfo.html ClamAV 是一个开源的反病毒引擎&#xff0c;它由多个模块组成&#xff0c;负责不同的任务处理。以下是 ClamAV 的主要模块和它们的功能&#xff1a; clamd&#xff1a;clamd 是 Clam…

# Kafka_深入探秘者(1):初识 kafka

Kafka_深入探秘者&#xff08;1&#xff09;&#xff1a;初识 kafka 一、kafka 特性 1、Kafka &#xff1a;最初是由 Linkedln 公司采用 Scala 语言开发的一个多分区、多副本并且基于 ZooKeeper 协调的分布式消息系统&#xff0c;现在已经捐献给了 Apache 基金会。目前 Kafka…

保姆级本地部署Qwen2

重点&#xff1a;Qwen2提供了CPU与GPU两种运行方式 运行成功效果图&#xff1a; 前提说明&#xff1a;如果需要用GPU&#xff0c;那么请在物理机安装ubuntu系统&#xff0c;不然显卡驱动很难安装&#xff0c;不建议新手部署。训练微调模型需要用到GPU。本文仅以ubuntu系统演示…

Todesk远程连接Ubuntu卡100%,以及小窗口打不开

Todesk远程连接Ubuntu卡100%&#xff0c;以及小窗口打不开 使用Todesk远程连接Ubuntu一直卡100%进不去还有todesk里的小悬浮窗打开就会小时&#xff08;小下拉框会消失&#xff09; 使用Todesk远程连接Ubuntu一直卡100%进不去 还有todesk里的小悬浮窗打开就会小时&#xff08;小…

梗图生成器突然爆红;ElevenLabs发布IOS APP 高质量语音朗读手机各种文本内容;开源工作流架构ControlFlow

✨ 1: 梗图生成器 fabianstelzer 在Glif做的一个超强meme生成器 Glif 是一个工作流&#xff0c;能生成文字图片和视频&#xff0c;用工作流的形式可以完成很多的花样来。 最近爆红的梗图生成器&#xff0c;WOJAK MEME GENERATOR &#xff0c;也是用工作流的形式来生成这些有…

防坑知识:如果要查自己的大数据信用报告,这几种平台一定不要选!

很多小伙伴在候遇到申贷碰壁&#xff0c;特别是被告知原因是大数据不良之后&#xff0c;都急着去了解自己的大数据信用情况&#xff0c;常见的方式就是在百度搜索大数据信用&#xff0c;大数据报告查询&#xff0c;哪里能查大数据信用等关键词&#xff0c;随便找一个地方就去查…

JavaScript的学习之图片的切换

目录 一、寻找素材 二、编写简单的静态html页面 代码示例 效果展示 三、JS功能的实现 JS代码 完整代码 效果展示 一、寻找素材 随便去网上找几张图片素材 二、编写简单的静态html页面 代码示例 <!doctype html> <html><head><meta charset"…

位运算算法系列|概念讲解|例题讲解

大家好,我是LvZi,今天带来位运算算法系列|概念讲解|例题讲解 一,位运算基本概念 1.基础位运算 <<:左移操作,相当于 *2>>:右移操作,相当于 /2~:按位取反&:按位与操作,有0则0|:按位或操作,有1则1^:按位异或操作,相同为0,相异为1/无进位相加 注:对于^操作,无进…

第三届仿真模拟、电子信息科学与技术国际学术会议(SMEI 2024,8月02-04)

随着仿真模拟技术的成熟和进步&#xff0c;仿真模拟技术越来越广泛地应用于工业工程、管理科学、社会经济、交通运输、生态环境、军事装备等各个科学领域&#xff0c;并深刻影响着信息技术和信息产业的发展。围绕仿真模拟、电子信息科学与技术等方面内容&#xff0c;为更好地促…