
sf.database.datasource.SimpleDataSource Maven / Gradle / Ivy
Show all versions of sorm Show documentation
package sf.database.datasource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.sql.DataSource;
import java.io.Closeable;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
/**
* 这是一个神奇的DataSource!!你甚至不需要设置driverClassName!!
* 把用户名,密码,jdbcURL设置一下,这个类就能用了!!
*
当然,你在你的 CLASSPATH 下要放置相应的数据库驱动 jar 包
* @author
*/
public class SimpleDataSource implements DataSource, Closeable {
private static final Logger log = LoggerFactory.getLogger(SimpleDataSource.class);
protected String username;
protected String password;
protected String driverClassName;
protected String jdbcUrl;
public SimpleDataSource() {
log.warn("SimpleDataSource is NOT a Connection Pool, So it is slow but safe for debug/study");
}
/**
* 这是唯一会被NutDao调用的方法
*/
public Connection getConnection() throws SQLException {
Connection conn;
if (username != null)
conn = DriverManager.getConnection(jdbcUrl, username, password);
else
conn = DriverManager.getConnection(jdbcUrl);
return conn;
}
public void close() {
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
public void setUrl(String url) {
this.jdbcUrl = url;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
if (driverClassName != null) {
try {
Class.forName(driverClassName);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}
//加载所有支持的数据库的驱动!!
static {
String[] drivers = {"org.h2.Driver",
"com.ibm.db2.jcc.DB2Driver",
"org.hsqldb.jdbcDriver",
"oracle.jdbc.OracleDriver",
"org.postgresql.Driver",
"net.sourceforge.jtds.jdbc.Driver",
"com.microsoft.sqlserver.jdbc.SQLServerDriver",
"org.sqlite.JDBC",
"com.mysql.jdbc.Driver",
"com.mysql.cj.jdbc.Driver",
"com.beyondb.jdbc.BeyondbDriver",
"ru.yandex.clickhouse.ClickHouseDriver",
"com.github.housepower.jdbc.ClickHouseDriver",
"cc.blynk.clickhouse.ClickHouseDriver"};
for (String driverClassName : drivers) {
try {
Class.forName(driverClassName);
} catch (Throwable e) {
}
}
}
//---------------------------------------------------------------
public PrintWriter getLogWriter() throws SQLException {
throw new UnsupportedOperationException();
}
public void setLogWriter(PrintWriter out) throws SQLException {
throw new UnsupportedOperationException();
}
public void setLoginTimeout(int seconds) throws SQLException {
throw new UnsupportedOperationException();
}
public int getLoginTimeout() throws SQLException {
throw new UnsupportedOperationException();
}
public T unwrap(Class iface) throws SQLException {
throw new UnsupportedOperationException();
}
public boolean isWrapperFor(Class> iface) throws SQLException {
throw new UnsupportedOperationException();
}
public Connection getConnection(String username, String password)
throws SQLException {
throw new UnsupportedOperationException();
}
public java.util.logging.Logger getParentLogger() {
throw new UnsupportedOperationException();
}
public static DataSource createDataSource(Properties props) {
SimpleDataSource sds = new SimpleDataSource();
sds.setJdbcUrl(props.getProperty("url", props.getProperty("jdbcUrl")));
sds.setPassword(props.getProperty("password"));
sds.setUsername(props.getProperty("username"));
return sds;
}
}