一. 数据库连接池
1. 概念
- 实质上就是存放数据库连接对象
Connection的容器 - 在应用程序启动时,容器被创建并申请一些连接对象
Connection,当用户访问数据库时,从容器中获取连接对象;当用户访问结束后,将连接对象归还给容器,以达到连接对象的复用,提高效率。
2. 实现
- 由数据库厂商实现接口
DataSource- C3P0:数据库连接池技术
- Druid:数据库连接池技术,阿里巴巴提供
3. 获取/归还连接
- 获取连接:
dataSource.getConnection() - 归还连接:
connection.close()
4. C3P0的使用
- 导入jar包
c3p0-0.9.5.2.jar,mchange-commons-java-0.2.12.jar和数据库驱动jar包mysql-connector-java-5.1.37-bin.jar
- 定义数据库连接池相关的配置文件(详情略)
- 名称:c3p0.properties 或者 c3p0-config.xml
- 路径:放在src目录下
- 创建数据库连接池对象
DataSource ds = new ComboPooledDataSource();
- 获取连接对象
Connection conn = ds.getConnection();
5. Druid的使用
- 步骤
- 导入jar包
druid-1.0.9.jar
- 定义properties类型的配置文件,可放置于任意目录下
- 加载配置文件
- 通过工厂获取数据库连接池对象
- 获取连接对象
- 导入jar包
- 代码
try { Properties pro = new Properties(); InputStream is = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties"); if (is != null) { pro.load(is); } ds = DruidDataSourceFactory.createDataSource(pro); } catch (Exception e) { e.printStackTrace(); }
二:JDBCTemplate
- 导入5个相关的jar包
- 创建JdbcTemplate对象。依赖于数据源DataSource
JdbcTemplate template = new JdbcTemplate(ds);
- 调用JdbcTemplate的方法来完成CRUD的操作
update():执行DML语句queryForMap():将查询结果集封装为一个map集合,列名作为key,值作为value- 注意:这个方法查询的结果集长度只能是1
queryForList():将查询结果集封装为list集合- 注意:
List<Map<String, Object>>:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
- 注意:
query():将查询结果封装为JavaBean对象- 参数:sql语句,
new BeanPropertyRowMapper<类型>(类型.class) - 使用BeanPropertyRowMapper实现类,可以完成数据到JavaBean的自动封装
- 查询所有记录,将其封装为Emp对象的List集合,示例代码:
String sql = "select * from emp"; List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class)); for (Emp emp : list) { System.out.println(emp); }
- 参数:sql语句,
queryForObject():将查询结果封装为对象- 参数:sql语句,
对象类型.class - 一般用于聚合函数的查询
- 参数:sql语句,