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 + " "); } 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 + " "); } 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