这时候我们就需要了解到:内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
以疫情期间为例,把人隔离观察住的酒店,就好比是内存,家喻户晓的JVM就是放在内存上的~~~ 酒店是给人住的,他的空间是宝贵的,然而每个人每天生活必需品,衣食住行等等,隔离一天两天可能酒店还放得下,但是隔离十天半个月,一年半载呢?酒店是住人的,不是放东西的~~~酒店寸土寸金每个地方都很宝贵,拿酒店(内存)来放行李和必需品等(海量数据),如果酒店还是西安的W酒店,这岂不是很奢侈?~~你拿来存放自己和跟班大批行李老哥,还缺行李不?(doge),想要存放大批东西(海量数据),我直接把十四运的主场馆(外存上的数据库)(69.6亩)给你放行李(海量数据)!
这下诸位应该都了然为什么我们需要搞数据库了吧?
二:如何使用Java连接数据库~
================
1)原生方法
1.1)加载JDBC 驱动:
Class.forName(driver);// mysql 数据库:“com.mysql.jdbc.Driver”
1.2)建立数据库连接:
Connection conn=DriverManager.getConnection(url,userName,password);
1.3)创建 statement,用来执行SQL 语句:
Statement statement =conn.createStatement();
1.4)执行 SQL 语句:
执行SQL语句一般要进行SQL语句的拼接
String SQL = “*******”;//拼接SQL语句,把里面可能会发生关键字,语法冲突的取出来,打上问号
//注意问号的下标从1开始
//这里预处理还能防止数据库注入!~
优化后的终极大招:
PreparedStatement 详解
预先处理好的声明 这个类好处诸多!
有如下:
1)首先 获取连接 我们在上面使用了DataSource类获取 DataSource的对象从而获取连接。这种方法比较注册驱动获取连接,还有一个好处,就是可以使用数据库连接池。
2)除此之外,我们利用PreparedStatemen这个类, preparedStatement 翻译过来就是~事先准备好的声明。 通过连接 获取事先准备好的声明。
PreparedStatement preparedStatement = connection.preparedStatement(SQL);
//上述获取连接之后,等号右边可以翻译为根据连接处理预先准备好的SQL字符串语句。
//然后把preparedStatement类型的引用变量指向 等号右边返回的对象
3)得到事先准备好的声明之后,对 事先准备好的声明 内 放置 要操作的具体内容!
即使setString和setInt 方法,
注意填空的问号下标应该是从1开始的!~
4)这样一来二去,我们把Statement方法优化成了PreparedStatement方法。好处有2
4.1)通过事先处理,后面可以填入的内容 鲁棒性增高,代码可复用性增强
4.2)无特殊要求,百分之九十九点九的开发中程序员都
使用 PreparedStatement 来防止数据库注入
5)接下来就是对预处理操作的具体执行
5.1) DQL语句 数据查询语言 preparedStatement.ExecuteQuery()
5.2) DML语句 数据操纵语言 preparedStatement.ExecuteUpdaye()这两个方法。
Execute the prepared statement翻译过来就是执行准备好的语句!
在此我们要注意执行所准备的语句如果是select即查询(query)语句,需要返回结果集合 ResultSet类实例化的集合对象。
**在针对结果集合对象resultSet进行操作时,必须调用其中的next()**方法!!!
因为next()方法相当于我们获取的操作集合的光标。调用该方法之后,我们能将resultSet结果集里面的对象取出!注意一定要调用这个next方法哦
如果查询结果集存在,resultSet.next();方法的返回值是true,否则是false;
因此可以放在if或者while内使用!~
即
while(resultSet.next());
if(resultSet.next());
ResultSet rs =statement.executeQuery(sql);
1.5)关闭记录集,关闭声明,关闭连接对象
1.6)连起来
在以反射的方式注册驱动从而获取数据库的连接的方法,详情可以参考我以前的博客,因为本文侧重于讲解DataSource连接数据库的方法!所以在此不作赘述~
1.7)原生方法的不足:
每次使用都要创建连接,使用完毕后还必须关闭连接,操作繁琐,易出错;
连接数据库资源不便统一管理;
三:IDEA中配置jar包
=============
工欲善其事必先利其器,在前期的学习过程中,我们使用JDBC连接MySQL的时候应该手动配置Jar包
四:url必知必会
=========
我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。.就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。
在使用连接数据库的时候需要先知道数据库的
连接信息~
列位您可记住嘞 127.0.0.1 这个地址:就是当前自己电脑的IP地址
而我们的IP地址 和 端口如何理解
IP地址就相当于我们点外卖订单所填的地址,端口号就是外卖订单所写的收件人!具体交给谁吃!
而且这个URL没必要强行记
URL
private static final String URL = “jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true”;
jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true
放在好找的地方(如gitee码云仓库)等,需要的时候复制粘贴一改就行了!~
五:datasource获取连接
================
package model;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
// DBUtil 本质上是一个管理了单例的 DataSource 的类
public class DBUtil {
private static final String URL = “jdbc:mysql://127.0.0.1:3306/java16_order_system?characterEncoding=utf8&useSSL=true”;
// private static final String URL = “jdbc:mysql://47.98.116.42:3306/java16_order_system?characterEncoding=utf8&useSSL=true”;
private static final String USERNAME = “root”;
private static final String PASSWORD = “rota”;
private static volatile DataSource dataSource = null;
public static DataSource getDataSource() {
if (dataSource == null) {
synchronized (DBUtil.class) {
if (dataSource == null) {
dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL(URL);
((MysqlDataSource)dataSource).setUser(USERNAME);
((MysqlDataSource)dataSource).setPassword(PASSWORD);
}
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/c8b3234cabbf7483cea3de2368d09f19.jpeg)
难道这样就够了吗?不,远远不够!
提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。
备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记
我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。
今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记
我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。
今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!
[外链图片转存中…(img-uM6rubbR-1713525616003)]
[外链图片转存中…(img-I4uXBIzV-1713525616005)]
[外链图片转存中…(img-x4iKkhjX-1713525616007)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!