All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.db.ds.DataSourceWrapper Maven / Gradle / Ivy

Go to download

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

There is a newer version: 5.8.34
Show newest version
package cn.hutool.db.ds;

import cn.hutool.core.clone.CloneRuntimeException;
import cn.hutool.core.io.IoUtil;

import javax.sql.DataSource;
import java.io.Closeable;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.logging.Logger;

/**
 * {@link DataSource} 数据源实现包装,通过包装,提供基本功能外的额外功能和参数持有,包括:
 *
 * 
 * 1. 提供驱动名的持有,用于确定数据库方言
 * 
* * @author looly * @since 4.3.2 */ public class DataSourceWrapper implements DataSource, Closeable, Cloneable { private final DataSource ds; private final String driver; /** * 包装指定的DataSource * * @param ds 原始的DataSource * @param driver 数据库驱动类名 * @return DataSourceWrapper */ public static DataSourceWrapper wrap(DataSource ds, String driver) { return new DataSourceWrapper(ds, driver); } /** * 构造 * * @param ds 原始的DataSource * @param driver 数据库驱动类名 */ public DataSourceWrapper(DataSource ds, String driver) { this.ds = ds; this.driver = driver; } /** * 获取驱动名 * * @return 驱动名 */ public String getDriver() { return this.driver; } /** * 获取原始的数据源 * * @return 原始数据源 */ public DataSource getRaw() { return this.ds; } @Override public PrintWriter getLogWriter() throws SQLException { return ds.getLogWriter(); } @Override public void setLogWriter(PrintWriter out) throws SQLException { ds.setLogWriter(out); } @Override public void setLoginTimeout(int seconds) throws SQLException { ds.setLoginTimeout(seconds); } @Override public int getLoginTimeout() throws SQLException { return ds.getLoginTimeout(); } @Override public Logger getParentLogger() throws SQLFeatureNotSupportedException { return ds.getParentLogger(); } @Override public T unwrap(Class iface) throws SQLException { return ds.unwrap(iface); } @Override public boolean isWrapperFor(Class iface) throws SQLException { return ds.isWrapperFor(iface); } @Override public Connection getConnection() throws SQLException { return ds.getConnection(); } @Override public Connection getConnection(String username, String password) throws SQLException { return ds.getConnection(username, password); } @Override public void close() { if (this.ds instanceof AutoCloseable) { IoUtil.close((AutoCloseable) this.ds); } } @Override public DataSourceWrapper clone() { try { return (DataSourceWrapper) super.clone(); } catch (CloneNotSupportedException e) { throw new CloneRuntimeException(e); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy