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的使用
-
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(); } } } } }
-
运行结果
批注 2019-11-01 202522.png
网友评论