100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > mysql dbcp 配置文件_数据库连接池DBCP使用方式

mysql dbcp 配置文件_数据库连接池DBCP使用方式

时间:2024-05-16 13:51:49

相关推荐

mysql dbcp 配置文件_数据库连接池DBCP使用方式

数据库连接池DBCP使用方式

概念

开源数据源实现,使用这些数据库连接池后,我们在项目开发中就不需要编写连接数据库的代码了。

开源数据源包含DBCP、C3P0、Druid等

DBCP Java使用实例:

说在前面

1.准备jar包

commons-dbcp2-2.1.1.jar、commons-pool2-2.9.0.jar

2.添加dbcp properties配置文件

最关键的是连接设置,将数据库的信息修改为自己的数据库。其余配置可以根据实际情况修改,也可不修改。

注意点:配置文件中参数名不能修改,因为dbcp代码中需要去获取这些参数的配置。

配置文件:mysql-dbcp.properties

#连接设置

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://localhost:3306/cclearn?useSSL=true&characterEncoding=utf8&useUnicode=true&serverTimezone=UTC

username=root

password=tester

#

initialSize=10

#最大连接数量

maxActive=50

#

maxIdle=20

#

minIdle=5

#

maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]

#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。

connectionProperties=useUnicode=true;characterEncoding=gbk

#指定由连接池所创建的连接的自动提交(auto-commit)状态。

defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。

#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE

defaultTransactionIsolation=READ_UNCOMMITTED

3.编写jdbc工具类

jdbc工具类文件:JdbcUtils.Java

首先附上未使用池化技术的Jdbc工具类:

package .mysql_learn;

import java.io.InputStream;

import java.sql.*;

import java.util.Properties;

public class JdbcUtils {

private static String driver;

private static String url;

private static String username;

private static String password;

static{//写在静态代码块中,类被加载的时候就运行了,只运行一次,优先于各种代码块以及构造函数

try{

Properties properties = new Properties();

InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("mysql.properties");

properties.load(in);//加载mysql.properties文件

driver = properties.getProperty("driver");//获取mysql.properties的信息

url = properties.getProperty("url");

username = properties.getProperty("username");

password = properties.getProperty("password");

Class.forName(driver);//加载驱动

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() throws ClassNotFoundException, SQLException {

return DriverManager.getConnection(url,username,password);//返回连接对象

}

public static void closeConnection(Connection connection, PreparedStatement preparedStatement, ResultSet rs) throws SQLException {

//依次释放

if(rs != null){

rs.close();

}

if(preparedStatement != null){

preparedStatement.close();

}

if(connection != null){

connection.close();

}

}

}

以下是使用DBCP的Jdbc工具类,可以看到,加载驱动及获取数据库连接的功能都被BasicDataSourceFactory创建出来的对象下的getConnection()方法实现了。

package .mysql_learn;

import mons.dbcp2.BasicDataSource;

import mons.dbcp2.BasicDataSourceFactory;

import java.io.InputStream;

import java.sql.*;

import java.util.Properties;

public class JdbcUtils {

static BasicDataSource dataSource;

static{

try{

//通过InputStream方式服务properties配置文件

Properties properties = new Properties();

InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("mysql-dbcp.properties");

properties.load(in);

dataSource = BasicDataSourceFactory.createDataSource(properties);

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() throws ClassNotFoundException, SQLException {

return dataSource.getConnection();

}

public static void closeConnection(Connection connection, PreparedStatement preparedStatement, ResultSet rs) throws SQLException {

if(rs != null){

rs.close();

}

if(preparedStatement != null){

preparedStatement.close();

}

if(connection != null){

connection.close();

}

}

}

4.编写主要业务代码

可以看到,在业务层面创建和销毁数据库连接的代码不需要有任何改变,因为改动都在JdbcUtils.Java工具类中。

package .mysql_learn;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class MysqlOptimization {

public static void main(String[] args) throws SQLException, ClassNotFoundException {

Connection connection = JdbcUtils.getConnection();

PreparedStatement preparedStatement = connection.prepareStatement("select * from users;");

ResultSet rs = preparedStatement.executeQuery();

if(rs.next()){

System.out.println(rs.getObject("user_name"));

}

JdbcUtils.closeConnection(connection,preparedStatement,rs);

}

}

原文:/ruoleecc/p/14318383.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。