数据库连接池:
1. 概念:其实就是一个容器(集合),存放数据库连接的对象。
* 当系统初始化后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问之后,会将连接对象归还给容器。
2.好处:
1. 节约资源
2. 重复利用连接,用户访问高效
3. 实现:
* 接口:DataSoure javax.sql包下的
* 方法:获取方法: getConnection
3. 归还连接:如果连接对象Connection是从连接池中获取的,那么调用的Connection.close()方法,则不会再关闭连接了。而是归还连接。
4.实现:
* 一般我们不去实现它,有数据库厂商实现(下面的连接池是第三方实现的)
1. C3P0:数据库连接池技术
2. Druid:数据库连接池实现技术,由阿里巴巴提供
3. C3P0:数据库连接池技术(这是别人实现的连接池,所以肯定是要导入jar包)
5. 步骤:
1. 导入jar包:c3p0-0.9.2.jar 和依赖包mchange-commons-java-0.2.12.jar
2. 定义配置文件:
3. 名称:c3p0.properties 或者c3p0-config.xml
4. 路径:直接将文件放在src目录下即可。
5. 定义参数可以硬定义和软定义,硬定义可以看说明,建议使用软定义,即定义配置文件来导入参数。
6. 创建对象(c3po) 数据库连接池对象 ComboPooledDataSource
7. 使用第三方连接池:
1.导入jar 包
2.设置一些参数
3.创建连接池对象
4.获取连接:getConnection
6.Druid:数据库连接池实现技术,由阿里巴巴提供的
1. 步骤:
1. 导入jar包 druid-1.0.9.jar
2. 定义配置文件:
* 是properties形式的
* 可以叫任意名称,可以放在任意目录下。
3. 加载配置文件。Properties
4. 获取数据库连接池对象:通过工厂来获取 DruidDataSourceFactory
5. 获取连接:getConnection
1. 定义工具类:
2. 定义一个类JDBCUtils
3. 定义参数可以硬定义和软定义,硬定义可以看说明,建议使用软定义,即定义配置文件来导入参数。
4. 为什么要放在src目录下,因为该目录可以通过类加载器获取
5. Factory结尾的类一般都是来创建对象的。
Spring JDBC:
1. Spring JDBC:
* Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
2. 步骤:
1.导入jar包
2.创建JDBCTemple对象,依赖于数据源DateSource
3.jdbcTemplate template =newjdbcTemplate(ds);
3.调用jdbcTemplate的方法来完成CRUD的操作:
1. update():执行DML语句。增、删、改语句
2. queryForMap():查询结果将封装为map集合
* 注意,这个方法查询的结果集长度只能是1.将列名作为 key,将值作为value,将这条记录封装为map集合。
3. queryForList():查询结果将结果封装为list集合
* 注意,该方法是将查询结果封装为map集合,然后再装 入list集合,所以能查询到所有结果。
4. query():查询结果,将结果封装为JavaBean对象
* 注意:该方法转换为对象的时候,其对象的变量如int,需要转换为包装类Integer。
* new BeanPropertyRowMapper<对象名>(对象名.class)
5. queryForObject:查询结果,将结果封装为对象
* 一般用于/聚合函数查询,它将查询结果的数量表示。
4.这些方法的格式演示:
* JdbcTemplate:
1. query(sql,new BeanPropertyRowMapper<类型>(类型.class)):
* 把查询到的数据封装成指定类型的JavaBean,再 存入到一个List集合。
2. Map queryForMap(sql,Object args):把查询到的一行数据封装成Map集合,但是只能封装一行数据。
3. List<Map>queryForList(sql,object args):把查询到的所有数据每一行封装成Map集合,多个map存入到map 集合中。
4. 类型queryForObject(sql,类型.class):操作一列数据,常常与聚合函数一起使用。
* 一般文件放在src根目录下面则直接写文件名即可,如果放在src下面的子目录中,需要以src目录为起点,写完整路径,如果查不到未见,会返回null。