为了简化代码,我们可以自己定义一个jdbc的工具类,来简化驱动,连接数据库和处理异常的代码。但是这样做,也是从底层抽取数据库的连接对象(connection),并且最终释放资源。
为了解决这种费时的方法,我们可以使用数据库的连接池,连接池是把连接对象都创建好,存放在一个容器当中,并且在使用过后,释放资源的时候,和线程池类似,会被重新放回连接池中,可以节约很多资源。
这种连接池通过javax.sql.包下的DataSource对象来获取。再用DataSource对象来创建连接对象。
而DataSource获取连接池的接口,是由数据库厂商来实现的,以下为两种数据库连接池技术(资源需要自己去寻找)
1 C3P0
1 导入jar包(两个)
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.12.jar
2. 定义配置文件:
名称: c3p0.properties 或者 c3p0-config.xml
路径:直接将文件放在src目录下即可
3 创建核心对象 数据库连接池对象 ComboPooledDataSource
- 获取连接对象: 通过getConnection方法,获取 Connection对象
2 Druid
1. 导入jar包 druid-1.0.9.jar
2. 定义配置文件:
是properties形式的
可以叫任意名称,可以放在任意目录下
3. 加载配置文件。Properties对象
4. 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
5. 获取连接:getConnection
我们为了简化代码,也可以创建一个数据库连接的工具类,用静态代码块的形式去创建好连接池,这样子可以做到,创建一个连接池,可以用到很多次。
Spring JDBC :与连接池的工具类一起使用,可以大幅度的简化代码,可以省略创建执行sql语句的对象,并且可以对查询出来的结果集,对其直接进行封装。减少了操作结果集的步骤。
Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
步骤:
1. 导入jar包
2. 创建JdbcTemplate对象。依赖于数据源DataSource
JdbcTemplate template = new JdbcTemplate(连接池对象);
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:查询结果,将结果封装为对象
* 一般用于聚合函数的查询