mysql druid使用_数据库连接池 —— Druid的简单使用

Druid不仅是一个数据库连接池,还包含一个ProxyDriver、一系列内置的JDBC组件库、一个SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等。

使用步骤

一定要导入jar架包。要配置好文件,如果不配置文件,记得在程序中自行添加。

导入jar包: druid-1.0.9.jar、mysql-connector-java-5.1.48.jar

定义配置文件:可以命名为druid-1.0.9.properties

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://MySQL地址/数据库名

username=用户名

password=密码

initialSize=初始化连接数

maxActive=最大连接数

maxWait=最大等待时间(毫秒为单位)

加载配置文件druid-1.0.9.properties

获取连接池对象

获取数据库连接

举例如下:

packagemy.view.datasource.druid;importcom.alibaba.druid.pool.DruidDataSourceFactory;importjavax.sql.DataSource;importjava.io.InputStream;importjava.sql.Connection;importjava.util.Properties;public classDruidDemo {public static void main(String[] args) throwsException {//获取加载配置文件的对象

Properties properties = newProperties();//获取类的类加载器

ClassLoader classLoader = DruidDemo.class.getClassLoader();//获取druid-1.0.9.properties配置文件资源输入流

InputStream resourceAsStream = classLoader.getResourceAsStream("druid-1.0.9.properties");//加载配置文件

properties.load(resourceAsStream);//获取连接池对象

DataSource dataSource =DruidDataSourceFactory.createDataSource(properties);//获取数据库连接对象

Connection connection =dataSource.getConnection();//打印获取到的数据库连接对象地址值

System.out.println(connection);

}

}

定义一个创建数据库连接池对象的类

在使用数据库连接池的时候,我们不可能说每次都如上例中的情况自己写一遍吧。我们可以自定义一个工具类,用来创建数据库连接池对象,这个时候,我们乳沟想要创建数据库连接池对象,直接调用该工具类即可。

创建工具类实例

定义获取数据库连接池对象的方法

/*** 数据库连接对象*/

private staticDataSource dataSource;/*获取数据库连接池对象*/

static{try{//获取加载配置文件的对象

Properties properties = newProperties();//获取类的类加载器

ClassLoader classLoader = JdbcUtils.class.getClassLoader();//获取druid-1.0.9.properties配置文件资源输入流

InputStream resourceAsStream = classLoader.getResourceAsStream("druid-1.0.9.properties");//加载配置文件

properties.load(resourceAsStream);//获取连接池对象

dataSource =DruidDataSourceFactory.createDataSource(properties);

}catch(Exception e) {

e.printStackTrace();

}

}/*** 获取连接池对象*/

public staticDataSource getDataSource() {returndataSource;

}

定义获取数据库连接对象的方法

/*** 获取数据库连接对象*/

public static Connection getConnection() throwsException {returndataSource.getConnection();

}

定义释放资源的方法

/*** 归还连接

*@paramt 要被归还到熟即可连接池对象的数据库连接对象

*@param 数据库连接对象的类型*/

public static voidreleaseResources (T t){if(t != null){try{//利用反射,获取class对象

Class> aClass =t.getClass();//获取class对象中的方法对象

Method close = aClass.getMethod("close");//执行方法

close.invoke(t);

}catch(Exception e) {

e.printStackTrace();

}

}

}

该工具类总的代码:

packagemy.view.utils;importcom.alibaba.druid.pool.DruidDataSourceFactory;importjavax.sql.DataSource;importjava.io.InputStream;importjava.lang.reflect.Method;importjava.sql.Connection;importjava.util.Properties;public classJdbcUtils {/*** 数据库连接对象*/

private staticDataSource dataSource;/*获取数据库连接池对象*/

static{try{//获取加载配置文件的对象

Properties properties = newProperties();//获取类的类加载器

ClassLoader classLoader = JdbcUtils.class.getClassLoader();//获取druid-1.0.9.properties配置文件资源输入流

InputStream resourceAsStream = classLoader.getResourceAsStream("druid-1.0.9.properties");//加载配置文件

properties.load(resourceAsStream);//获取连接池对象

dataSource =DruidDataSourceFactory.createDataSource(properties);

}catch(Exception e) {

e.printStackTrace();

}

}/*** 获取连接池对象*/

public staticDataSource getDataSource() {returndataSource;

}/*** 获取数据库连接对象*/

public static Connection getConnection() throwsException {returndataSource.getConnection();

}/*** 归还连接

*@paramt 要被归还到熟即可连接池对象的数据库连接对象

*@param 数据库连接对象的类型*/

public static voidreleaseResources (T t){if(t != null){try{//利用反射,获取class对象

Class> aClass =t.getClass();//获取class对象中的方法对象

Method close = aClass.getMethod("close");//执行方法

close.invoke(t);

}catch(Exception e) {

e.printStackTrace();

}

}

}

}

使用上面创建个工具类实例

有如下一个数据表格

CREATE TABLEaccount (

idINT PRIMARY KEY AUTO_INCREMENT, --id

NAME VARCHAR(10), --名字

balance DOUBLE --余额

);INSERT INTO account (NAME, balance) VALUES ('LeeHua', 1000), ('Tom', 1000);

向该表格中插入一条数据,实现如下:

packagemy.view.datasource.druid;importmy.view.utils.JdbcUtils;importjavax.sql.DataSource;importjava.sql.Connection;importjava.sql.PreparedStatement;public classJdbcUtilsDemo {public static void main(String[] args) throwsException{//获取数据库连接池对象

DataSource dataSource =JdbcUtils.getDataSource();//从数据库连接池对象中获取数据库连接对象

Connection connection =dataSource.getConnection();//预定义定义SQL语句

String sql = "INSERT INTO account (NAME, balance) VALUES (?, ?);";//获取执行预定义SQL语句对象

PreparedStatement preparedStatement =connection.prepareStatement(sql);//给?赋值

preparedStatement.setString(1, "WanWu");

preparedStatement.setInt(2, 2000);//执行预编译好的SQL语句

preparedStatement.executeUpdate();//释放资源:PreparedStatement

JdbcUtils.releaseResources(preparedStatement);//归还连接

JdbcUtils.releaseResources(connection);//释放资源:数据库连接池

JdbcUtils.releaseResources(dataSource);

}

}

运行程序,然后查询一下表记录:

mysql druid使用_数据库连接池 —— Druid的简单使用_第1张图片

可以看到插入了一条数据,说明测试成功。

68f724bad5a33d9a9f6bd2ca7369ecb7.png

你可能感兴趣的:(mysql,druid使用)