资料下载:跟后面的JDBC一起打包,有需要的下载咯。下载的网址:http://download.csdn.net/detail/xiaozhegaa/9816808
连接池概念:传统方式找DriverManager要连接,数目是有限的。传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的桥梁,即无发送到SQL命令到数据库端执行 。 此时的连接并没有回收回去,而是操作系统每隔一定的时间回收。这样子的话,短时间内不能实现多用户的访问。会出错。所以就引入连接池的概念。
连接池的分类:DBCP和C3P0,都是Java开源的,都必须直接或间接实现javax.sql.DataSource接口
两种连接池的底层就是:不让你直接向数据库获取连接,而是通过连接池获取,既是连接与数据库中放一层连接池。看图
值得一提的是【扩展】Tomcat服务器本身也有连接池的功能,使用的是 DBCp.但是默认是不开启。需要配置。Hibernate框架使用的是C3p0连接池。
二:DBUtils框架:小型的操作数据库框架,目的是为了简化数据库的操作
//Dbutils主要掌握两个核心的类
QueryRunner类:这是用来执行sql语句的类
构造其有二种方式
a)空参构造 new QueryRunner()
b)通过DataSource构造 new QueryRunner(JdbcUtil.getDataSource())
//上面两者有点小小区别,若是无带参数的,表示同一个线程实例,带参数的表示不是一个线程
ResultsetHander接口
BeanHandler/BeanListHandler:争对JavaBean 单个、集合Bean,下面一样
ArrayHandler/ArrayListHandler:争对数组
MapHandler/MapListHandler:争对Map
ScalarHandler:争对Long
//上面两个可能会有点难懂,看下面的案例源码就明白了,上述是从源码中总结出来的
三:dbutils开发步骤
第一步:导包C3P0包
c3p0-0.9.1.2.jar 连接池核心包
commons-dbutils-1.0.jar dbutils操作包
commons-logging.jar 错误日志包
第二步:新建c3p0-config.xml文件。位置放在src目录下,位置和文件命名是一样的
第三步:配置数据库连接信息
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/mydb3</property>
</default-config>
</c3p0-config>
第四步:写测试代码
//获取数据源,默认会去src文件夹下面加载c3p0-config.xml文件
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//得到数据库操作对象
QueryRunner runner = new QueryRunner(dataSource );
//书写sql语句
String sql = "select * from user where id = ?";
//执行sql语句,这里需要特备说明:
//第一个参数是:sql语句
//第二个参数是:以一个数组形式传递参数,按照sql语句中的占位符代替
//第三个参数是返回值的类型。这里有点难理解
//举个例子,这里我是要返回一条数据,并且把它封装到Bean对象中,在上述的7个结果类中 ,发现要封装到Bean中有两个符合要求
//BeanHandler/BeanListHandler,一个是封装单个,一个是封装集合。选择前者。并且把封装Bean类传递进去
User user = (User) query(sql,new Object[]{1},new BeanHandler(User.class));
总结来说:
更新、删除,增加 都是 runner.update()。里面参数可以看一下提示。alt+/
查找 runner.query():需要把数据封装
同样的可以打包一个包装类
演示案例