Druid基本使用教程

Druid基本使用教程

  • 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

  • druid为阿里巴巴的数据源,(数据库连接池),集合了c3p0、dbcp、proxool等连接池的优点,还加入了日志监控,有效的监控DB池连接和SQL的执行情况。

  • 正式版本下载:maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/

怎么配置maven

  • Druid 0.1.18 之后版本都发布到maven中央仓库中,所以你只需要在项目的pom.xml中加上dependency就可以了。例如:

    <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>${druid-version}</version>
    </dependency>
    
  • 或者复制druid-1.0.9.jar添加到库文件中

  • 配置文件

    • 名称:druid.properties

    • 位置:src下

      driverClassName=com.mysql.jdbc.Driver
      url=jdbc:mysql:///db3
      username=root
      password=root
      # 初始化连接数
      initialSize=5
      # 最大连接数
      maxActive=10
      # 超时时间
      maxWait=3000
      

Druid的使用

  1. Java代码

    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    import java.util.Scanner;
    
    public class DruidDemo1 {
        public static void main(String[] args) {
            String sql = "select * from student where id = ?";
            Scanner sc = new Scanner(System.in);
            int id = sc.nextInt();
            Connection conn = null;
            PreparedStatement pstmt = null;
            try {
                //创建Properties对象,用于加载配置文件
                Properties pro = new Properties();
                //加载配置文件
                pro.load(DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties"));
                //获取数据库连接池对象
                DataSource ds = DruidDataSourceFactory.createDataSource(pro);
                //获取数据库连接对象
                conn = ds.getConnection();
                //获取statement,使用prepareStatement,防止sql注入
                pstmt = conn.prepareStatement(sql);
                //注入sql参数(sql中?将被替换)
                pstmt.setInt(1,id);
                //执行sql,返回数据集
                ResultSet rs = pstmt.executeQuery();
                //数据处理
                while(rs.next()){
                    int id1 = rs.getInt("id");
                    String name = rs.getString("name");
                    System.out.println(id+" "+ name);
                };
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                //释放stmt
                if(pstmt != null){
                    try {
                        pstmt.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                //conn归还连接池
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
    
  2. 运行结果


    批注 2019-11-01 202522.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容