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 class DruidTest {
public static void main(String[] args) {
DataSource dataSource = null;
Properties properties=new Properties();//获取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<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 ex) {
System.out.println(ex);
throw new RuntimeException("数据查询失败");
}
}
}
测试结果:
1 123 212 2133 213
2 zhai nan 20171514 study
123 zzz nan 123 lanqiu
124 zzz nan 123 rap
125 zzz nan 123 chang
126 zzz nan 123 tiao
与数据库中的数据一致:
(7)流程分析
- 通过一个类的class对象可以动态获取该类的对象,调用该类的属性、方法
- 这个class对象不仅可以获取上述内容,还可以得知是由哪一个类加载器,加载本类生成对象的
- 获取类加载器后,类加载器可以加载当前项目中的任何资源
- 获取class对象的方式一共有三种,三种方式获取到的是同一个class对象
2、封装为工具类
(1)工具类:
public class DruidUtils {
//声明数据源对象
private static DataSource dataSource = null;
//在静态代码块中完成对数据源的初始化
static {
Properties properties = new Properties();
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 static DataSource getDataSource() {
return dataSource;
}
}
(2)测试:
public class UtilsTest {
public static void main(String[] args) {
DataSource dataSource = DruidUtils.getDataSource();
QueryRunner qr = new QueryRunner(dataSource);//参数为数据源
try {
String sql = "select * from t_stu";
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 ex) {
System.out.println(ex);
throw new RuntimeException("数据查询失败");
}
}
}
测试结果:
1 123 212 2133 213
2 zhai nan 20171514 study
123 zzz nan 123 lanqiu
124 zzz nan 123 rap
125 zzz nan 123 chang
126 zzz nan 123 tiao