package cn.itcase.demo;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;
/*
* 连接池jar包中,定义好一个类BasicDataSource
* 实现类数据源的规范接口 javax.sql.DataSource
*/
public class DataSourceDemo {
public static void main(String[] args) {
//创建DataSource接口的实现类对象
//实现类,org.apache.commons.dbcp
BasicDataSource dataSource = new BasicDataSource();
//连接数据库的4个最基本信息,通过对象方法setXXX设置进来
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mybase");
dataSource.setUsername("root");
dataSource.setPassword("123456");
try {
//调用对象方法getConnection获取数据库的连接
Connection con = dataSource.getConnection();
System.out.println(con);
}catch (SQLException ex) {
System.out.println(ex);
throw new RuntimeException("数据库连接失败");
}
}
}
实现数据库连接池工具类:
package cn.itcase.jdbcutils;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
/*
* 使用DBCP实现数据库的连接池
* 连接池配置,自定义类
* 最基本四项完整
* 对于数据库连接池其他配置,自定义
*/
public class JDBCUtils {
private static BasicDataSource datasource = new BasicDataSource();
static {
datasource.setDriverClassName("com.mysql.jdbc.Driver");
datasource.setUrl("jdbc:mysql://localhost:3306/mybase");
datasource.setUsername("root");
datasource.setPassword("123456");
//对象连接池中的连接数量配置
datasource.setInitialSize(10);//初始化的连接数
datasource.setMaxActive(8);//最大连接数量
datasource.setMaxIdle(5);//最大空闲数
datasource.setMinIdle(1);//最小空闲数
}
//定义静态方法,返回BasicDataSource类的对象
public static DataSource getDataSource() {
return datasource;
}
}
工具类的测试:
package cn.itcase.jdbcutils;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
/*
*
*/
public class QueryRunnerDemo {
public static void main(String[] args) {
insert();
select();
}
//定义2个方法,实现数据表的添加,数据表查询
//QueryRunner类对象,写在类成员位置
private static QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
//数据表查询
public static void select() {
String sql = "SELECT * FROM sort";
try {
List<Object[]> list = qr.query(sql, new ArrayListHandler());
for(Object[] objs:list) {
for(Object obj:objs) {
System.out.print(obj+"\t");
}
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("数据查询失败");
}
}
//数据表添加数据
public static void insert() {
String sql = "INSERT INTO sort (sname,sprice,sdesc)VALUES(?,?,?)";
Object[] params = {"水果",100.12,"刚刚上市的核桃"};
try {
int row = qr.update(sql, params);
System.out.println(row);
}catch(SQLException ex) {
ex.printStackTrace();
throw new RuntimeException("数据添加失败");
}
}
}