1 连接池
1.1 介绍
实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池。
用池来管理Connection,这样可以重复使用Connection。有了池,我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池,这样池就可以再利用这个Connection对象了。
1.2 DBCP连接池
1)导入jar包
- commons-dbcp2-2.5.0.jar
- commons-pool2-2.6.0.jar
- commons-logging-1.2.jar
2)编写工具类
public class JDBCUtils {
public static final String DRIVERNAME = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/my_db";
public static final String USER = "root";
public static final String PASSWORD = "rootroot";
// 1 创建连接池 BasicDataSource
public static BasicDataSource dataSource=new BasicDataSource();
// 2 静态代码块
static {
// 对连接池对象进行进本的配置
dataSource.setDriverClassName(DRIVERNAME);
dataSource.setUrl(URL);
dataSource.setUsername(USER);
dataSource.setPassword(PASSWORD);
}
// 3 返回连接池对象
public static javax.sql.DataSource getDataSource() {
return dataSource;
}
}
3)工具类的使用
插入记录:
public static void main(String[] args) throws Exception {
// 1 获取一个用来执行SQL语句的对象
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2 SQL语句
String sql = "insert into zhangwu(name,money,parent) values(?,?,?)";
Object[] params = {"业余收入",6000,"收入"};
// 3 对数据库进行操作
int line=queryRunner.update(sql, params);
// 4 结果集处理
System.out.println("line="+line);
}
更新记录:
// 1 获取一个用来执行SQL语句的对象
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2 SQL语句
String sql = "update zhangwu set money = money+1000 where name=?";
Object[] params = { "业余收入"};
// 3 对数据库进行操作
int line = queryRunner.update(sql, params);
// 4 结果集处理
System.out.println("line=" + line);
查询记录:
// 1 获取一个用来执行SQL语句的对象
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2 SQL语句
String sql = "select * from zhangwu";
Object[] params = {};
// 3 对数据库进行操作
ZhangWu zWu=queryRunner.query(sql, new BeanHandler<ZhangWu>(ZhangWu.class),params);
// 4 结果集处理
System.out.println(zWu);
删除记录:
// 1 获取一个用来执行SQL语句的对象
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
// 2 SQL语句
String sql = "delete from zhangwu where name=?";
Object[] params = {"灰色收入"};
// 3 对数据库进行操作
int line=queryRunner.update(sql, params);
// 4 结果集处理
System.out.println(line);