druiddatasource 方法_druid(德鲁伊)连接池的DataSourceUtils的写法及原生写法

方法改进前:

@Test

public void test01() throws Exception{

InputStream is = Demo.class.getClassLoader().getResourceAsStream("druid.properties");

//创建配置文件对象

Properties properties = new Properties();

properties.load(is);

//创建连接池对象

//druid 提供了一个工具类对象

DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

//获取连接

Connection connection = dataSource.getConnection();

System.out.println(connection);

//打印连接池

System.out.println(dataSource);

//归还到连接池

connection.close();

}

写成工具类的写法:

import com.alibaba.druid.pool.DruidDataSourceFactory;

import com.alibaba.druid.support.jconsole.DruidSqlDetailFrame;

import javax.sql.DataSource;

import java.io.IOException;

import java.io.InputStream;

import java.sql.*;

import java.util.Properties;

//连接池的工具类

public class DataSourceUtils {

// 声明变量 static

public static DataSource dataSource;

// 初始化连接池(仅一次)

static {

// 加载 druid.properteis 使用类加载

System.out.println(DataSourceUtils.class.getClassLoader());

InputStream is = DataSourceUtils.class.getClassLoader().getResourceAsStream("druid.properties");

// 创建连接池对象 使用工具类

try {

// 创建配置文件对象

Properties properties = new Properties();

// 加载io流 key = value

properties.load(is);

// 使用第三方连接池 druid

dataSource = DruidDataSourceFactory.createDataSource(properties);

} catch (Exception e) {

e.printStackTrace();

}

}

// 提供获取连接池的方法

public static DataSource getDataSource() {

return dataSource;

}

// 提供获取连接的方法

public static Connection getConnection() throws SQLException {

return dataSource.getConnection();

}

// 提供关闭资源的方法【connection是归还到连接池】

// 提供关闭资源的方法 【方法重载】3 dql

public static void closeResource(ResultSet resultSet, Statement statement, Connection connection) {

// 关闭结果集

// ctrl+alt+m 将java语句抽取成方法

closeResultSet(resultSet);

// 关闭语句执行者

closeStatement(statement);

// 关闭连接

closeConnection(connection);

}

// 提供关闭资源的方法 【方法重载】 2 dml

public static void closeResource(Statement statement, Connection connection) {

// 关闭语句执行者

closeStatement(statement);

// 关闭连接

closeConnection(connection);

}

private static void closeConnection(Connection connection) {

if (connection != null) {

try {

connection.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

private static void closeStatement(Statement statement) {

if (statement != null) {

try {

statement.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

private static void closeResultSet(ResultSet resultSet) {

if (resultSet != null) {

try {

resultSet.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:227) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1654) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1718) at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:914) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1382) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1378) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:99) at org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:194) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... 77 comm
03-26
http-nio-8080-exec-4 [ERROR] c.alibaba.druid.pool.DruidDataSource recyle error java.sql.SQLSyntaxErrorException: (conn=4199621) Connection.clearWarnings cannot be called on a closed connection at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:110) at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:211) at com.oceanbase.jdbc.OceanBaseConnection.clearWarnings(OceanBaseConnection.java:1325) at com.alibaba.druid.pool.DruidConnectionHolder.reset(DruidConnectionHolder.java:295) at com.alibaba.druid.pool.DruidDataSource.recycle(DruidDataSource.java:1662) at com.alibaba.druid.pool.DruidPooledConnection.recycle(DruidPooledConnection.java:323) at com.alibaba.druid.pool.DruidPooledConnection.close(DruidPooledConnection.java:268) at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:404) at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:391) at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:358) at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:302) at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:574) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:361) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMet
最新发布
07-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值