みんな,こんにちは。Je n'ai pas vu depuis longtemps. 每个星期一更新的日志栏目又开始了。 你问我为啥不日更? 当然是因为 “怠け者” 懒。 好了,废话不多说,开始今天的总结(复制粘贴)。 对了,忘说了
新年おめでとうございます! 新年快乐!Joyeux nouvel an!
连接池概述l 概念 用池来管理Connection,这样可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。
l 规范 Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池! 常见的连接池:DBCP、C3P0。 DBCP连接池
DBCP也是一个开源的连接池,是Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。
1.1.1 编写工具类连接数据库表的工具类, 采用DBCP连接池的方式来完成,Java中提供了一个连接池的规则接口 : DataSource : 它是java中提供的连接池,作为 DriverManager工具的替代项。在DBCP包中提供了DataSource接口的实现类,我们要用的具体的连接池 BasicDataSource类 public class JDBCUtils { public static final String DRIVER= "com.mysql.jdbc.Driver"; public static final String URL ="jdbc:mysql://localhost:3306/daydb"; public static final String USERNAME = "root"; public static final String PASSWORD = "root"; /* * 创建连接池BasicDataSource */ public static BasicDataSource dataSource= new BasicDataSource(); //静态代码块 static { //对连接池对象进行基本的配置 dataSource.setDriverClassName(DRIVER); // 这是要连接的数据库的驱动 dataSource.setUrl(URL);//指定要连接的数据库地址 dataSource.setUsername(USERNAME); //指定要连接数据的用户名 dataSource.setPassword(PASSWORD); //指定要连接数据的密码 } /* * 返回连接池对象 */ public static DataSource getDataSource(){ return dataSource; }
}
l 测试类 /* * 演示使用DBUtils工具 完成数据库表的增加操作 */ public class Demo { // 插入功能 @Test public void insert(){ try { //获取一个用来执行SQL语句的对象 QueryRunner QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); String sql = "INSERT INTO zhangwu(name,money,parent) VALUES(?,?,?)"; Object[] params = {"股票收入",5500, "收入"}; int line = qr.update(sql,params); //结果集处理 System.out.println("line = " + line); } catch (SQLException e) { throw new RuntimeException(e); } } //删除功能 @Test public void delete(){ try { //创建一个QueryRunner对象,用来完成SQL语句的执行 QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); //执行SQL语句 String sql = "DELETE FROMzhangwu WHERE name = ?"; Object[] params = {"股票收入"}; int line = qr.update(sql, params); //结果集的处理 System.out.println("line="+line); } catch (SQLException e) { throw new RuntimeException(e); } } //更新功能 @Test public void update(){ try { //创建一个QueryRunner对象,用来完成SQL语句的执行 QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); //执行SQL语句 String sql = "UPDATE zhangwuSET money = money+1000 WHERE name=?"; Object[] params = {"股票收入"}; int line = qr.update(sql, params); //结果集的处理 System.out.println("line="+line); } catch (SQLException e) { throw new RuntimeException(e); } } //查询功能,将结果集中第一条记录封装到一个指定的javaBean中。 @Test public void search(){ try{ //获取QueryRunner QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); //执行SQL语句 Stringsql = "SELECT* FROM zhangwu"; Object[] params = {}; Product p = qr.query(sql, new BeanHandler<Product>(Product.class), params); //结果集处理 System.out.println(p); } catch(SQLException e){ throw new RuntimeException(e); } } }
l DBCP连接池 n 作用:自身维护了多个Connection连接对象维护 n BasicDataSource类 是 DataSource接口的实现类 l DataSource接口,它是java与每种数据库连接池 连接的规范标准 l DBCP连接池常见的配置
搞定收工, 下次更新大约在明年。 亲爱的观众朋友们,咱们明年见。 System.out.print("王俊峰")
|