1、Druid的使用
(1)概念
由阿里巴巴提供
(2)新建一个web项目
(3)导入Druid的jar包
(4)定义配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/student
username=root
password=root
#初始化连接数量
initialSize=3#最大连接数量
maxActive=5#最大等待时间
maxWait=3000
必须是properties文件
可以放在任意目录下
文件名任意
(5)加载配置文件,从数据库连接池工厂(DruidDataSourceFactory)中获取数据库连接池对象,然后获取连接对象
(6)测试
需要先导入jar包:
获取数据库连接,要和数据库的版本匹配,否则会连接数据库失败
导入Dbutils的jar包
代码如下:
public classDruidTest {public static voidmain(String[] args) {
DataSource dataSource= null;
Properties properties=newProperties();//获取DruidTest字节码对象,然后获取类加载器,加载Druid的配置文件
InputStream iStream = DruidTest.class.getClassLoader().getResourceAsStream("druid.properties");try{
properties.load(iStream);//解析文件,加载文件的数据
dataSource =DruidDataSourceFactory.createDataSource(properties);
}catch(Exception e) {
e.printStackTrace();
}
QueryRunner qr= new QueryRunner(dataSource);//参数为数据源
try{
String sql= "select * from t_stu";
List list = qr.query(sql, newArrayListHandler());for(Object[] objs : list) {for(Object obj : objs) {
System.out.print(obj+ "\t");
}
System.out.println();
}
}catch(SQLException ex) {
System.out.println(ex);throw new RuntimeException("数据查询失败");
}
}
}
测试结果:
1 123 212 2133 213
2 zhai nan 20171514study123 zzz nan 123lanqiu124 zzz nan 123rap125 zzz nan 123chang126 zzz nan 123 tiao
与数据库中的数据一致:
(7)流程分析
通过一个类的class对象可以动态获取该类的对象,调用该类的属性、方法
这个class对象不仅可以获取上述内容,还可以得知是由哪一个类加载器,加载本类生成对象的
获取类加载器后,类加载器可以加载当前项目中的任何资源
获取class对象的方式一共有三种,三种方式获取到的是同一个class对象
2、封装为工具类
(1)工具类:
public classDruidUtils {//声明数据源对象
private static DataSource dataSource = null;//在静态代码块中完成对数据源的初始化
static{
Properties properties= newProperties();try{//获取到类加载器自带的输入流对象,去读取配置文件
InputStream iStream = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");/*FileInputStream fStream = new FileInputStream("src/druid.properties");*/properties.load(iStream);
dataSource=DruidDataSourceFactory.createDataSource(properties);
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}//获取数据源的方法
public staticDataSource getDataSource() {returndataSource;
}
}
(2)测试:
public classUtilsTest {public static voidmain(String[] args) {
DataSource dataSource=DruidUtils.getDataSource();
QueryRunner qr= new QueryRunner(dataSource);//参数为数据源
try{
String sql= "select * from t_stu";
List list = qr.query(sql, newArrayListHandler());for(Object[] objs : list) {for(Object obj : objs) {
System.out.print(obj+ "\t");
}
System.out.println();
}
}catch(SQLException ex) {
System.out.println(ex);throw new RuntimeException("数据查询失败");
}
}
}
测试结果:
1 123 212 2133 213
2 zhai nan 20171514study123 zzz nan 123lanqiu124 zzz nan 123rap125 zzz nan 123chang126 zzz nan 123 tiao