zoukankan      html  css  js  c++  java
  • 数据库连接池:Durid(执行流程、工具类)

    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    
  • 相关阅读:
    LOL 计蒜客
    cf1486 D. Max Median
    P3567 [POI2014]KUR-Couriers
    dp 求物品组合情况
    黑暗爆炸
    hdu5306 Gorgeous Sequence
    P4609 [FJOI2016]建筑师
    cf 1342 E. Placing Rooks
    重修dp-背包
    acwing 2154. 梦幻布丁
  • 原文地址:https://www.cnblogs.com/zhai1997/p/13288961.html
Copyright © 2011-2022 走看看