##数据库连接池
###数据库连接池的概述
概述:数据库连接池其实就是一个存放数据库连接对象(Connection)的容器。
JDBC存在的问题:JDBC中每次创建一个Connection对象都需要从系统中申请,而且使用完这个对象以后又要通过close方法去释放该对象,把该资源交还给系统底层,这个过程中会耗费大量资源和时间。
数据库连接池的作用:通过数据库连接池技术,可以在程序运行之前,连接池就可以向系统底层申请指定数量的数据库连接对象,并存放在连接池对象中,而当操作完成以后,连接对象不会被交换给系统底层,而是放到连接池对象中重复使用。
###数据库连接池分类
1.C3P0:标准的数据库连接池。
2.Druid:由阿里巴巴开发的数据库连接池。
###数据库连接池基本使用步骤(以Druid为例)
1.导入数据库驱动包和连接池驱动包
2.导入配置文件 – 配置文件必须命名为:druid.properties
3.解析配置文件的内容,得到数据库连接池
Properties pp = new Properties();
//加载文件
pp.load(JDBCUtils.class.getClassLoader().getResourceAsStrea(“druid.properties”));
ds = DruidDataSourceFactory.createDataSource(pp);
4.创建工具类,用来获取数据库连接池
###JDBCSpring与数据库连接池的结合使用
1.导入五个jar包,如图。
2.创建JdbcTemplate对象
1)创建Template对象,并传入数据库连接池对象
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
2)创建sql语句
String sql = “UPDATE account SET money = money + ? WHERE id =?”;
3)执行sql
int count = template.update(sql, 2000,2);
4)打印结果
System.out.println(count);
3. 调用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:查询结果,将结果封装为对象
* 一般用于聚合函数的查询