数据库连接池
JDBC
1、JDBC的概念:
概念:通过Java代码操作数据库( 增, 删, 改, 查)
2、快速入门操作步骤:
A. 导入jar包
B. 注册驱动
Class. forName ( "com.mysql.jdbc.Driver" ) ;
C. 获取驱动
String url = "jdbc:mysql://127.0.0.1:3306/ee" ;
Connection conn = DriverManager. getConnection ( url, "root" , "123" ) ;
D. 获取操作对象
Statement stat = conn. createStatement ( ) ;
E. 操作SQL
int num = stat. executeUpdate ( sql) ;
F. 释放资源
stat. close ( ) ;
conn. close ( ) ;
JDBC各个类的详细介绍
1、DriverManager 驱动管理
A. 注册驱动
原始的注册驱动的代码 Class. forName ( "com.mysql.jdbc.Driver" ) ;
Driver底层代码采用的是 DriverManager. registerDriver ( new Driver ( ) ) ;
B. 获取连接
String url = "jdbc:mysql://127.0.0.1:3306/ee" ;
Connection conn = DriverManager. getConnection ( url, "root" , "123" ) ;
C. 简化URL的写法(前提条件: 连接的是自己本机数据库)
String url = "jdbc:mysql:///ee" ;
Connection conn = DriverManager. getConnection ( url, "root" , "123" ) ;
2、Connection 连接数据库
A. 获取执行数据库的对象
a. 直接获取执行数据库的对象
Statement stat = conn. createStatement ( ) ;
b. 获取预置语句执行数据库对象
PrepareStatement ps = conn. prepareStatement ( sql语句) ;
B. 管理事务
a. 开启事务
conn. setAutoCommit ( false ) ;
b. 提交事务
conn. commit ( ) ;
c. 回滚事务
conn. rollback ( ) ;
3、Statement 操作数据库
A. 更新操作( DML"对表记录的增删改" 和DDL"对表和库的增删改" )
int num = stat. executeUpdate ( "SQL语句" ) ;
B. 查询操作( DQL"对表记录的查询操作" )
ResultSet resu = stat. executeQuery ( "SQL查询语句" ) ;
4、ResultSet 查询表结果集
A. 判断是否还存在下一条数据
boolean b = resu. next ( ) ;
B. 获取结果集当中的数据
a. 通过查询到的结果集, 索引值获取( 索引值从1 开始)
int data01 = resu. getInt ( 1 ) ;
String data02 = resu. getString ( 2 ) ;
b. 通过查询到的结果集, 列名称获取
int data01 = resu. getInt ( "id" ) ;
String data02 = resu. getString ( "name" ) ;
5、PrepareStatement 操作数据库
A. 获取预置操作
select * from user where username = ? and password = ? ;
PreparedStatement ps = Connection. prepareStatement ( sql) ;
B. 设置参数
ps. setString ( 1 , "root" ) ;
ps. setString ( 2 , "123" ) ;
C. 执行SQL语句
ps. executeQuery ( ) ;
JDBC的工具类
1、抽取的两个部分
A. 连接Connection的对象
Connection conn = DriverManager. getConnection ( url, username, password) ;
B. 释放资源
a. 增删改 ( 释放 Connection 和 Statement)
b. 查询 ( 释放 Connection 和 Statement 和 ResultSet)
2、准备数据
A. 四个配置文件的数据( 对应的就是静态成员变量)
url= jdbc: mysql: / / 127.0 .0 .1 : 3306 / ee
username= root
password= 123
driver= com. mysql. jdbc. Driver
B. 静态代码块
a. 赋值静态成员变量( 类的加载器"获取配置文件路径" , Properties"通过配置文件路径,获取四个值" )
b. 注册驱动 Class. forName ( driver) ;
3、使用工具类
Connection conn = JDBCUtils. getConnection ( ) ;
JDBCUtils. close ( resu, stat, conn) ;
JDBC连接池
1、概念和好处
A. 概念:
连接池就是一个集合, 集合当中存放有多个数据库的连接对象 Connection的对象. (可借可还)
B. 好处:
a. 节约系统资源
b. 提升连接效率
2、常见的连接池
A. 标准连接池:
javax. sql. DataSource 通用的方法
a. getConnection ( ) 获取连接池的操作
b. close ( ) 归还连接池的操作( 归还不是释放资源)
B. 其他框架的连接池
a. C3P0 数据库连接池
b. Druid 阿里的连接池
3、C3P0连接池的操作步骤
A. 准备工作
a. 导入jar包
c3p0- 0.9 .5 .2 . jar
mchange- commons- java- 0.2 .12 . jar
mysql- connector- java- 5.1 .37 - bin. jar
b. 配置文件( 写在src文件夹目录下面, 名称必须叫以下的名称) 二者选其一
c3p0. properties
c3p0- config. xml
B. 编写代码的操作
a. 创建对象
DataSource ds = new ComboPooledDataSource ( ) ;
b. 获取连接
Connection conn = ds. getConnection ( ) ;
4、Druid连接池的使用
A. 准备工作
a. 导入jar包
druid- 1.0 .9 . jar
mysql- connector- java- 5.1 .37 - bin. jar
b. 配置文件( 写在src文件夹目录下面)
driverClassName= com. mysql. jdbc. Driver
url= jdbc: mysql: /
username= root
password= root
initialSize= 5
maxActive= 10
maxWait= 3000
B. 编写代码的操作
a. 加载配置文件的数据 Properties
Properties pp = new Properties ( ) ;
InputStream is = 当前类. class . getClassLoader ( ) . getResourceAsStream ( 配置文件的名称) ;
pp. load ( is) ;
b. 获取连接池的对象
DataSource ds = DruidDataSourceFactory. createDataSource ( pp) ;
c. 获取连接
Connection conn = ds. getConnection ( ) ;
JDBCTemplate
1、含义
由三大框架的 Spring 框架封装的JDBC操作. 又称为"JDBCTemplate"
2、操作步骤
A. 准备工作
1. 导入jar包
a. 与JDBCTemplate相关的jar包
commons- logging- 1.2 . jar
spring- beans- 5.0 .0 . RELEASE. jar
spring- core- 5.0 .0 . RELEASE. jar
spring- jdbc- 5.0 .0 . RELEASE. jar
spring- tx- 5.0 .0 . RELEASE. jar
b. 需要有连接池的jar包(在C3P0和Druid当中二选一)
druid- 1.0 .9 . jar
c. 需要数据库连接的jar包
mysql- connector- java- 5.1 .37 - bin. jar
2. 准备连接池的配置文件 druid. properties
driverClassName= com. mysql. jdbc. Driver
url= jdbc: mysql: / / 127.0 .0 .1 : 3306 / java68db02
username= root
password= 123
initialSize= 5
maxActive= 10
maxWait= 3000
3. 准备工具类
获取连接池的对象
public static DataSource getDataSource ( ) {
return datasource;
}
B. 创建对象
JdbcTemplate temp = new JdbcTemplate ( ds) ;
C. 调用方法
a. DML的方法
update ( ) 执行"增,删,改" 的操作
b. DQL的方法
query ( ) 将查询的结果封装成为 JavaBean (标准学生类)
queryForObject ( ) 将查询的结果封装成为对象 "用于聚合函数的查询"
queryForList ( ) 将查询的结果封装成为List集合 "查询的是多条记录,封装成为List<Map>"
queryForMap ( ) 将查询的结果封装成为Map集合"查询的是一条记录,封装成为Map"
List< ZFBBean> mList = temp. query ( sql, new BeanPropertyRowMapper < ZFBBean> ( ZFBBean. class ) ) ;