本文知识点:
- 数据库连接池介绍
- 数据库连接池工具实现
- JDBCTemplate介绍
- JDBCTemplate的使用
1. 数据库连接池介绍
1.1 概念
数据库连接池其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
1.2 优势
1. 节约资源
2. 用户访问高效
2. 数据库连接池工具实现
2.1 实现
标准接口:
DataSource
(javax.sql
包下) 方法:
- 获取连接:
getConnection()
- 归还连接:
Connection.close()
。如果连接对象Connection
是从连接池中获取的,那么调用Connection.close()
方法,则不会再关闭连接了。而是归还给连接池。
我们一般不自己实现,主要采用
C3P0
:数据库连接池技术。Druid
:数据库连接池实现技术,由阿里巴巴提供的。
2.2 常用数据厂商实现
2.2.1 C3P0
实现
步骤:
- 导入jar包 (两个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar ,
- 不要忘记导入数据库驱动jar包
- 定义配置文件:
- 名称: c3p0.properties 或者 c3p0-config.xml
- 路径:直接将文件放在src目录下即可。
- 创建核心对象 数据库连接池对象 ComboPooledDataSource
- 获取连接: getConnection
- //1.创建数据库连接池对象
- DataSource ds = new ComboPooledDataSource();
- //2. 获取连接对象
- Connection conn = ds.getConnection();
2.2.2 Druid
实现
步骤:
- 导入jar包 druid-1.0.9.jar
- 定义配置文件:
- 是properties形式的
- 可以叫任意名称,可以放在任意目录下
- 加载配置文件。Properties
- 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
- 获取连接:getConnection
2.3 代码试验
-
获取多个数据库连接对象
-
获取超过最大限度的数据库连接对象
-
当之前的数据库连接对象被释放时,可以再次被使用
3. JDBCTemplate介绍
Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发。 步骤:
- 导入jar包
- 创建JdbcTemplate对象。依赖于数据源DataSource
- JdbcTemplate template = new JdbcTemplate(ds);
- 调用JdbcTemplate的方法来完成CRUD的操作
- update():执行DML语句。增、删、改语句
- queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
- 注意:这个方法查询的结果集长度只能是1
- queryForList():查询结果将结果集封装为list集合
- 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
- query():查询结果,将结果封装为JavaBean对象
- query的参数:RowMapper
- 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
- new BeanPropertyRowMapper<类型>(类型.class)
- queryForObject:查询结果,将结果封装为对象
- 一般用于聚合函数的查询
4. JDBCTemplate的使用
- 使用JDBCTemplate操作数据库
- 插入数据
注:本文的源代码托管在Github