1.JDBC概述
JDBC是连接数据库,操作数据库的工具。
是接口的规范。
JDBC七个步骤:
加载驱动,获取连接,创建statement对象执行sql,resultstatement,关闭RS,关闭statement对象,关闭连接释放资源
开发的步骤* 加载驱动使用 DriverManager 类* 获取连接,返回 Connection 接口,说明连接上数据库的服务器* 执行 SQL 语句* 编写SQL 语句* 获取能执行SQL 语句的对象( Statement 接口)* 如果执行的查询的语句,返回的结果,封装 ResultSet 接口中,遍历该接口* 释放资源(调用 close() 方法)
减少创建连接的时间
常用mysql的版本:5.6 ,5.7 ,8.0的。
5.6,5.7用的是
这个jar包。
2.步骤引入
1.加载驱动
加载驱动的方式有两种
1.
DriverManager.registerDriver(new Driver());
DriverManager这个类是因为导了
驱动jar包,
这个类点这个方法,说明这个方法是静态方法
传递的是一个驱动类
这一行之后能够去获取连接了。
2.
反射的方式
Class.forName("com.mysql.jdbc.Driver");
2. 获取连接
conn = DriverManager.getConnection("jdbc:mysql:///jdbcdemo", "root", "root");
getConnection获取连接
获取连接
* static Connection getConnection(String url, String user, String password)
* 参数有3个
* 第一个参数:jdbc:mysql://localhost:3306/day07(背下来)
* jdbc ‐‐ 代表的主协议
* mysql ‐‐ 子协议(有可能变化的)
* localhost ‐‐ 主机
* 3306 ‐‐ 默认的端口号
* day07 ‐‐ 数据库
* 如果访问的是本地的自己的数据库,那么localhost:3306就可以省略不写
* mysql的命令 ‐uroot ‐proot
* JDBC简写:jdbc:mysql:///day07
* 第二个参数:root(用户名)
* 第三个参数:root(密码)
statement对象有两个:
createStatement()和prepareStatement()
这两个的区别:createStatement不能解决sql注入问题,不安全。prepareStatement能解决sql注入问题,安全
每次都需要执行那七步,加载驱动..关闭连接。
于是就需要抽取出来一个工具类,
3.工具类:
加载驱动,获取连接
properties文件里都是key-value类型的数据,通过反射机制获取db.properties文件信息,通过给key赋值,加载这个流。
这段代码的意义,当通过类点的时候,就先执行这些代码,拿到这些参数
反射的方式去加载驱动,就替换了
DriverManager.registerDriver(new Driver());
这行代码
看起来没少,但是
直接调用方法即可。
关闭资源:
查询操作才会有结果集,所以工具类分为两个关闭方法。
重载。
工具类获取出来了,但是每一次去获取连接,都会走工具类去加载,每一次都要加载、销毁连接。
创建和销毁需要消耗时间成本--->数据库连接池,池化思想。把所有东西准备出来,公共使用。--共享单车
数据库连接池用的最多的,就是druid的阿里巴巴提供的连接池。
导jar包,
下面这些参数是连接池参数
.连接池(池参数,如果不指定,有默认值)
* 初始大小:10个 initialSize
* 最小空闲连接数:3个 minIdle
* 增量:一次创建的最小单位(5个) maxOpenPreparedStatements
* 最大空闲连接数:12个 maxIdle
* 最大连接数:20个 maxActive
* 最大的等待时间:1000毫秒 maxWait
以后加载驱动由DATA_SOURCE提供,DATA_SOURCE是一个接口,接口就要有具体的实现。
此次拿到的连接是从连接池里拿到的,这个工厂去加载的时候这个连接已经加载好了,里面有多少个链接,
这里声明好了,这里是5,说明如果有5个人来获取连接,就不需要产生连接的时间(一开始加载的时候,连接池加载5个),第六个人来的时候,如果前五个人没有人还回来,就要有创建连接的时间,就会去增长。以什么样的倍数去增长,这里设定好了。
有个最大等待时间,这里是3000毫秒,也就是第六个人来的时候等待3000毫秒,如果3000毫秒内那五个人没有人还,就会马上创建新的连接。
会有一个最大连接数
还有一个最大闲时连接数,在火车站上买票,人多的时候会有很多售票员,人少的时候就会有一两个值班人员,减少开支
关闭资源:
原先是销毁,原来是通过DriverMAnager获取的连接,这里是通过连接池获取的连接,对关闭资源方法重写,按照自己的逻辑执行,把链接归还到连接池。
总结!!
连接池作用:减少了创建连接和销毁链接的时间。
3. 导包
IDEA里拖进来,不代表应用上了。想要应用上需要添加配置。
选择到项目下的jar包
现在下面就有东西了。