
com.github.xiaoyuge5201.config.DataSourceClient Maven / Gradle / Ivy
The newest version!
package com.github.xiaoyuge5201.config;
import com.github.xiaoyuge5201.entity.ColumnEntity;
import com.github.xiaoyuge5201.util.ConnectUtil;
import com.google.common.base.CaseFormat;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* 数据源工具类
*
* @author yugb
*/
public class DataSourceClient implements Serializable {
private DatasourceProperties properties;
private DataSourceClient(DatasourceProperties properties) {
this.properties = properties;
}
/**
* 重写一个方法,使用桥接模式;使用readResolve方法防止单例模式被序列化破坏
*
* @return 实体对象
*/
public DatasourceProperties getProperties() {
return properties;
}
private DataSourceClient setProperties(DatasourceProperties properties) {
this.properties = properties;
return this;
}
/**
* 获取对象
*
* @param properties 属性
* @return 对象
*/
public synchronized static DataSourceClient build(DatasourceProperties properties) {
return new DataSourceClient(properties);
}
/**
* 查询所有的表结构信息
*
* @return 表结构列表
*/
public List findAllTables() {
Connection connection = ConnectUtil.getConnection(properties.getDriverClassName(), properties.getHost(), properties.getUsername(), properties.getPassword(), properties.getDatabase());
if (connection != null) {
List list = new ArrayList();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
String query = ConnectUtil.getTablesInfoBySqlAndType(properties.getDriverClassName(), properties.getDatabase());
stmt = connection.prepareStatement(query);
rs = stmt.executeQuery();
while (rs.next()) {
list.add(rs.getString("TABLE_NAME"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
return null;
}
/**
* 查詢數據庫表的字段信息
*
* @param table 数据表
* @return 表字段列表
*/
public List queryTableFields(String table) {
Connection connection = ConnectUtil.getConnection(properties.getDriverClassName(), properties.getHost(), properties.getUsername(), properties.getPassword(), properties.getDatabase());
if (connection != null) {
List list = new ArrayList<>(16);
PreparedStatement stmt = null;
ResultSet rs = null;
try {
String query = ConnectUtil.queryColumnSql(properties.getDriverClassName(), properties.getDatabase(), table);
stmt = connection.prepareStatement(query);
rs = stmt.executeQuery();
while (rs.next()) {
ColumnEntity columnEntity = new ColumnEntity();
String columnName = rs.getString("COLUMN_NAME");
columnEntity.setColumnName(columnName);
columnEntity.setDataType(rs.getString("DATA_TYPE"));
columnEntity.setCharacterMaximunLength(rs.getString("CHARACTER_MAXIMUM_LENGTH"));
columnEntity.setIsNullable(rs.getString("IS_NULLABLE"));
columnEntity.setColumnDefault(rs.getString("COLUMN_DEFAULT"));
columnEntity.setColumnComment(rs.getString("COLUMN_COMMENT"));
columnEntity.setTableName(rs.getString("TABLE_NAME"));
columnEntity.setJavaName(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, columnName));
columnEntity.setTableComment(rs.getString("TABLE_COMMENT"));
list.add(columnEntity);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
return null;
}
/**
* 查询对应库下所有字段 信息
*
* @return 结果
*/
public List findColumnByDriverAndDatabase() {
Connection connection = ConnectUtil.getConnection(properties.getDriverClassName(), properties.getHost(), properties.getUsername(), properties.getPassword(), properties.getDatabase());
if (connection != null) {
List list = new ArrayList<>(16);
PreparedStatement stmt = null;
ResultSet rs = null;
try {
String query = ConnectUtil.getSqlByType(properties.getDriverClassName(), properties.getDatabase());
stmt = connection.prepareStatement(query);
rs = stmt.executeQuery();
while (rs.next()) {
ColumnEntity columnEntity = new ColumnEntity();
columnEntity.setColumnName(rs.getString("COLUMN_NAME"));
columnEntity.setDataType(rs.getString("DATA_TYPE"));
columnEntity.setCharacterMaximunLength(rs.getString("CHARACTER_MAXIMUM_LENGTH"));
columnEntity.setIsNullable(rs.getString("IS_NULLABLE"));
columnEntity.setColumnDefault(rs.getString("COLUMN_DEFAULT"));
columnEntity.setColumnComment(rs.getString("COLUMN_COMMENT"));
columnEntity.setTableName(rs.getString("TABLE_NAME"));
columnEntity.setTableComment(rs.getString("TABLE_COMMENT"));
list.add(columnEntity);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy