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

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

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

相关文章

Elasticsearch:Painless scripting 语言(一)

Painless 是一种高性能、安全的脚本语言&#xff0c;专为 Elasticsearch 设计。你可以使用 Painless 在 Elasticsearch 支持脚本的任何地方安全地编写内联和存储脚本。 Painless 提供众多功能&#xff0c;这些功能围绕以下核心原则&#xff1a; 安全性&#xff1a;确保集群的…

近红外光谱脑功能成像(fNIRS):1.光学原理、变量选取与预处理

一、朗伯-比尔定律与修正的朗伯-比尔定律 朗伯-比尔定律 是一个描述光通过溶液时被吸收的规律。想象你有一杯有色液体&#xff0c;比如一杯红茶。当你用一束光照射这杯液体时&#xff0c;光的一部分会被液体吸收&#xff0c;导致透过液体的光变弱。朗伯-比尔定律告诉我们&#…

redis主从复制哨兵模式集群管理

主从复制&#xff1a; 主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。缺陷&#xff1a;故障恢复无法自动化&#xff1b;写操作无法负载均衡&…

HbuilderX:安卓打包证书.keystore生成与使用

前置条件 已安装jdk或配置好jre环境。 .keystore生成 打开cmd,切换到目标路径,输入以下命令, keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore 输入密钥库口令(要记住), 然后输入一系列信息, …

ui.perfetto.dev sql 查询某个事件范围内,某个事件的耗时并降序排列

ui.perfetto.dev sql 查询某个事件范围内,某个事件的耗时并降序排列 1.打开https://ui.perfetto.dev 导入Chrome Trace Json文件2.ParallelMLP.forward下的RowParallelLinear.forward3.点击Query(SQL),在输入框中输入以下内容,按CtrlEnter,显示查询结果4.点击Show timeline,点击…

2024年07年01日 Redis数据类型以及使用场景

String Hash List Set Sorted Set String&#xff0c;用的最多&#xff0c;对象序列化成json然后存储 1.对象缓存&#xff0c;单值缓存 2.分布式锁 Hash&#xff0c;不怎么用到 1.可缓存经常需要修改值的对象&#xff0c;可单独对对象某个属性进行修改 HMSET user {userI…

C++基础(三):C++入门(二)

上一篇博客我们正式进入C的学习&#xff0c;这一篇博客我们继续学习C入门的基础内容&#xff0c;一定要学好入门阶段的内容&#xff0c;这是后续学习C的基础&#xff0c;方便我们后续更加容易的理解C。 目录 一、内联函数 1.0 产生的原因 1.1 概念 1.2 特性 1.3 面试题 …

用随机森林算法进行的一次故障预测

本案例将带大家使用一份开源的S.M.A.R.T.数据集和机器学习中的随机森林算法&#xff0c;来训练一个硬盘故障预测模型&#xff0c;并测试效果。 实验目标 掌握使用机器学习方法训练模型的基本流程&#xff1b;掌握使用pandas做数据分析的基本方法&#xff1b;掌握使用scikit-l…

珠江电缆,承载您梦想的每一度电

在现代社会&#xff0c;电力无处不在&#xff0c;它不仅是经济发展的动力&#xff0c;更是每个人生活中不可或缺的能量来源。而在这个电力驱动的世界里&#xff0c;有一家企业默默地承载着千家万户的梦想&#xff0c;它就是珠江电缆。 连接梦想的每一度电 珠江电缆成立于2001…

绝区零国际服下载 一键下载绝区零国际服教程

绝区零是一款米哈游倾情打造的全新都市幻想动作角色扮演游戏。在游戏中&#xff0c;我们将扮演一名绳匠&#xff0c;这是为出于各种原因需要进入危险空洞的人提供指引的专业人士。您将与独特的角色一起踏上冒险之旅&#xff0c;携手探索空洞&#xff0c;对战强大敌人&#xff0…

Steam夏促怎么注册 Steam夏促账号注册教程

随着夏日的炙热渐渐充斥着每一个角落&#xff0c;Steam平台也赶来添热闹&#xff0c;推出了一系列让人眼前一亮的夏季促销活动。如果你也是游戏爱好者&#xff0c;我们肯定不能错过这次的steam夏促。正直本次夏日促销有着很多的游戏迎来史低和新史低&#xff0c;有各种各样的游…

20240703在飞凌OK3588-C开发板上刷Rockchip原厂的Buildroot20220811

20240703在飞凌OK3588-C开发板上刷Rockchip原厂的Buildroot20220811 2024/7/3 18:25 详细的刷机LOG&#xff1a; [BEGIN] 2024/7/3 18:18:49 rootRK3588:/# DDR Version V1.07 20220412 LPDDR4X, 2112MHz channel[0] BW16 Col10 Bk8 CS0 Row16 CS1 Row16 CS2 Die BW16 Size204…

TP8/6 更改后台入口地址admin改为myadmin 隐藏真实后台网址

原来www.xxx.com/admin 改后www.xxx.com/myadmin config/app.php // 应用映射&#xff08;自动多应用模式有效&#xff09;app_map > [admintest>admin],

为何同一PDF文档用不同软件打印效果不同?

通过扫描仪生成的同一PDF文档&#xff0c;同样的设置&#xff0c;为什么别的电脑打出来是白底我的打出来有灰色格子背景&#xff1f;这种情况通常是由于PDF阅读软件的不同造成的差异。 ### 可能的原因和解决方法&#xff1a; 1. **PDF阅读软件的不同**&#xff1a; - **解决方…

Vue3轻松创建交互式仪表盘

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于 Plotly.js 的 Vue 仪表盘组件 应用场景介绍 仪表盘是一种交互式可视化工具&#xff0c;用于监控和分析关键指标。它广泛应用于各种行业&#xff0c;例如金融、医疗保健和制造业。 代码基本功能介绍 本…

FFmpeg 命令行 音视频格式转换

&#x1f4da;&#xff1a;FFmpeg 提供了丰富的命令行选项和功能&#xff0c;可以用来处理音视频文件、流媒体等&#xff0c;掌握命令行的使用&#xff0c;可以有效提高工作效率。 目录 一、视频转换和格式转换 &#x1f535; 将视频文件转换为另一种格式 &#x1f535; 指定…

12个惊艳的可视化大屏:解锁数据之美,洞见未来趋势

在数字化转型的浪潮中&#xff0c;可视化大屏以其独特的魅力和强大的功能&#xff0c;成为了企业展示数据、洞察趋势的重要窗口。我们将一同探索12个惊艳的可视化大屏案例&#xff0c;感受数据之美&#xff0c;洞见未来趋势。 可视化大屏&#xff0c;作为数据可视化的高级形态…

vue3绘制广东深圳地图使用echarts

<!-- 饼图 --> <template><el-card><template #header> 地级市分类图 </template><div :id"id" :class"className" :style"{ height, width }"></div></el-card> </template><script …

彻底学会Gradle插件版本和Gradle版本及对应关系

看完这篇&#xff0c;保你彻底学会Gradle插件版本和Gradle版本及对应关系&#xff0c;超详细超全的对应关系表 需要知道Gradle插件版本和Gradle版本的对应关系&#xff0c;其实就是需要知道Gradle插件版本对应所需的gradle最低版本&#xff0c;详细对应关系如下表格&#xff0…

Lua、AB包热更新总结

1.AB包热更新 &#xff08;1&#xff09;AB包是一种特定的压缩文件&#xff0c;可以放模型贴图音效等等 &#xff08;2&#xff09;Resources目录下打包时只读 无法修改&#xff1b;而AB包存储的位置是自定义的&#xff0c;能够动态更新&#xff0c;同时可以决定资源包初始的大…