com.github.xiaoyuge5201.util.ConnectUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of datasource-spring-boot-starter Show documentation
Show all versions of datasource-spring-boot-starter Show documentation
数据库连接工具,查询mysql、oracle、sqlserver、postgresql的数据表以及字段信息;同时支持导出数据库设计文档
package com.github.xiaoyuge5201.util;
import com.github.xiaoyuge5201.config.DatabaseDriverEnum;
import com.github.xiaoyuge5201.config.MyDataSourceProperties;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 數據庫连接工具类
*
* @author xiaoyuge
*/
public class ConnectUtil {
/**
* 判断是否连接成功
*
* @param driver 驱动
* @param url ip+端口
* @param username 用户名
* @param pwd 密码
* @param name 数据库名称
* @return true/false
*/
public static boolean testConnection(String driver, String url, String username, String pwd, String name) throws SQLException {
Connection connections = getConnection(driver, url, username, pwd, name);
if (connections != null) {
connections.close();
return true;
}
return false;
}
/**
* 获取数据库地址
*
* @param driver 驱动
* @param url ip+端口
* @param dbname 数据库名称
* @return 数据库地址
*/
public static String getUrl(String driver, String url, String dbname) {
String urlStr = null;
if (url.contains("jdbc:")) {
return url;
} else {
if (DatabaseDriverEnum.MYSQL.getDriver().equals(driver)) {
urlStr = "jdbc:mysql://" + url + "/" + dbname + "?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf8";
} else if (DatabaseDriverEnum.POSTGRE_SQL.getDriver().equals(driver)) {
urlStr = "jdbc:postgresql://" + url + "/" + dbname + "?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf8";
} else if (DatabaseDriverEnum.ORACLE.getDriver().equals(driver)) {
urlStr = "jdbc:oracle:thin:@//" + url + "/" + dbname + "?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf8";
} else if (DatabaseDriverEnum.SQL_SERVER.getDriver().equals(driver)) {
urlStr = "jdbc:sqlserver://" + url + ";DatabaseName=" + dbname + "?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf8";
}
}
return urlStr;
}
/**
* 根据数据库类型获取驱动类型
*
* @param dbType 数据库类型
* @return 驱动类型
*/
public static String getDriverClassName(Integer dbType) {
return DatabaseDriverEnum.getValue(dbType);
}
/**
* 获得数据库连接
*
* @param driver 驱动
* @param url 地址
* @param username 用户名
* @param password 密码
* @param dbname 数据库
* @return 结果
*/
public static Connection getConnection(String driver, String url, String username, String password, String dbname) {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(getUrl(driver, url, dbname), username, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取数据库连接
*
* @param properties 数据库连接属性
* @return 连接对象
*/
public static Connection getConnection(MyDataSourceProperties properties) {
Connection conn = null;
try {
Class.forName(properties.getDriverClassName());
conn = DriverManager.getConnection(properties.getUrl(), properties.getUsername(), properties.getPassword());
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}