黑马程序员技术交流社区
标题: (White Album)12.31日志 [打印本页]
作者: yinrock11 时间: 2017-12-31 17:09
标题: (White Album)12.31日志
みんな,こんにちは
。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("王俊峰")
作者: 陈文老师 时间: 2018-1-2 09:11
新年快乐~~~~·
作者: 1414225997 时间: 2018-1-2 09:22
新年快乐!
作者: xiongliu 时间: 2018-1-2 10:03
新年快乐~~~~·
作者: 渝小妹 时间: 2018-1-2 10:24
温故而知新 加油哦 多多总结
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |