新增: 加载表方法
parent
ad79acc598
commit
02c9281c98
@ -0,0 +1,73 @@
|
|||||||
|
package space.caoshd.otone.builder;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import space.caoshd.otone.entity.TableInfo;
|
||||||
|
import space.caoshd.otone.tool.PropertyTools;
|
||||||
|
import space.caoshd.otone.util.ConfigConstants;
|
||||||
|
import space.caoshd.otone.util.DatabaseUtils;
|
||||||
|
import space.caoshd.otone.util.PropertiesConstants;
|
||||||
|
import space.caoshd.otone.util.SqlConstants;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class TableBuilder {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(TableBuilder.class);
|
||||||
|
|
||||||
|
public static List<TableInfo> loadTableInfo() {
|
||||||
|
List<TableInfo> result = new ArrayList<>();
|
||||||
|
PropertyTools configProperties =
|
||||||
|
new PropertyTools(PropertiesConstants.CONFIG_PROPERTIES_PATH);
|
||||||
|
List<String> schemaNames = configProperties.getStrings(ConfigConstants.SCHEMA_NAMES);
|
||||||
|
if (schemaNames.isEmpty()) {
|
||||||
|
// TODO LOAD CURRENT SCHEMA
|
||||||
|
} else {
|
||||||
|
for (String schemaName : schemaNames) {
|
||||||
|
result.addAll(loadTableInfo(schemaName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<TableInfo> loadTableInfo(String schema) {
|
||||||
|
List<TableInfo> result = new ArrayList<>();
|
||||||
|
PropertyTools configProperties =
|
||||||
|
new PropertyTools(PropertiesConstants.CONFIG_PROPERTIES_PATH);
|
||||||
|
List<String> tables = configProperties.getStrings(ConfigConstants.TABLE_NAMES);
|
||||||
|
if (tables.isEmpty()) {
|
||||||
|
// TODO LOAD ALL TABLE
|
||||||
|
} else {
|
||||||
|
for (String table : tables) {
|
||||||
|
TableInfo tableInfo = loadTableInfo(schema, table);
|
||||||
|
if (Objects.nonNull(tableInfo)) {
|
||||||
|
result.add(tableInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TableInfo loadTableInfo(String schemaName, String tableName) {
|
||||||
|
PropertyTools sqlProperties = new PropertyTools(PropertiesConstants.MYSQL_PROPERTIES_PATH);
|
||||||
|
String sql = sqlProperties.getString(SqlConstants.TABLE_DETAIL_SQL_SCHEMA_TABLE);
|
||||||
|
List<String> params = Arrays.asList(schemaName, tableName);
|
||||||
|
Map<String, String> table = DatabaseUtils.one(sql, params);
|
||||||
|
if (Objects.isNull(table)) {
|
||||||
|
LOGGER.warn("table: [{}] not exists", tableName);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
TableInfo result = new TableInfo();
|
||||||
|
result.setTableName(tableName);
|
||||||
|
String tableCommentLabel =
|
||||||
|
sqlProperties.getString(SqlConstants.TABLE_DETAIL_LABEL_TABLE_COMMENT);
|
||||||
|
String comment = table.get(tableCommentLabel);
|
||||||
|
result.setComment(comment);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,64 @@
|
|||||||
|
package space.caoshd.otone.entity;
|
||||||
|
|
||||||
|
public class FieldInfo {
|
||||||
|
|
||||||
|
private String fieldName;
|
||||||
|
|
||||||
|
private String propertyName;
|
||||||
|
|
||||||
|
private String sqlType;
|
||||||
|
|
||||||
|
private String javaType;
|
||||||
|
|
||||||
|
private String comment;
|
||||||
|
|
||||||
|
private Boolean autoIncrement;
|
||||||
|
|
||||||
|
public String getFieldName() {
|
||||||
|
return fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldName(String fieldName) {
|
||||||
|
this.fieldName = fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPropertyName() {
|
||||||
|
return propertyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPropertyName(String propertyName) {
|
||||||
|
this.propertyName = propertyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSqlType() {
|
||||||
|
return sqlType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSqlType(String sqlType) {
|
||||||
|
this.sqlType = sqlType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getJavaType() {
|
||||||
|
return javaType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setJavaType(String javaType) {
|
||||||
|
this.javaType = javaType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getComment() {
|
||||||
|
return comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setComment(String comment) {
|
||||||
|
this.comment = comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getAutoIncrement() {
|
||||||
|
return autoIncrement;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAutoIncrement(Boolean autoIncrement) {
|
||||||
|
this.autoIncrement = autoIncrement;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,88 @@
|
|||||||
|
package space.caoshd.otone.util;
|
||||||
|
|
||||||
|
import space.caoshd.otone.tool.PropertyTools;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.ResultSetMetaData;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class DatabaseUtils {
|
||||||
|
private DatabaseUtils() {}
|
||||||
|
|
||||||
|
|
||||||
|
public static Connection getConnection() {
|
||||||
|
try {
|
||||||
|
InputStream datasourcePropertiesStream = ResourceUtils.getClassPathFileStream(
|
||||||
|
PropertiesConstants.DATASOURCE_PROPERTIES_PATH);
|
||||||
|
PropertyTools propertyTools = new PropertyTools(datasourcePropertiesStream);
|
||||||
|
String username = propertyTools.getString("username");
|
||||||
|
String password = propertyTools.getString("password");
|
||||||
|
String driverClassName = propertyTools.getString("driver-class-name");
|
||||||
|
String url = propertyTools.getString("url");
|
||||||
|
Class.forName(driverClassName);
|
||||||
|
return DriverManager.getConnection(url, username, password);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Map<String, String>> list(String sql, List<?> params) {
|
||||||
|
try (Connection connection = getConnection()) {
|
||||||
|
List<Map<String, String>> result = new ArrayList<>();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||||||
|
for (int i = 0; i < params.size(); i++) {
|
||||||
|
preparedStatement.setObject(i + 1, params.get(i));
|
||||||
|
}
|
||||||
|
ResultSet resultSet = preparedStatement.executeQuery();
|
||||||
|
ResultSetMetaData metaData = resultSet.getMetaData();
|
||||||
|
int columnCount = metaData.getColumnCount();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
for (int i = 1; i <= columnCount; i++) {
|
||||||
|
Map<String, String> row = new HashMap<>();
|
||||||
|
String columnLabel = metaData.getColumnLabel(i);
|
||||||
|
String columnValue = resultSet.getString(i);
|
||||||
|
row.put(columnLabel.toUpperCase(), columnValue);
|
||||||
|
result.add(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> one(String sql, List<?> params) {
|
||||||
|
try (Connection connection = getConnection()) {
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||||||
|
for (int i = 0; i < params.size(); i++) {
|
||||||
|
preparedStatement.setObject(i + 1, params.get(i));
|
||||||
|
}
|
||||||
|
ResultSet resultSet = preparedStatement.executeQuery();
|
||||||
|
|
||||||
|
if (!resultSet.next()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
ResultSetMetaData metaData = resultSet.getMetaData();
|
||||||
|
int columnCount = metaData.getColumnCount();
|
||||||
|
Map<String, String> result = new HashMap<>();
|
||||||
|
|
||||||
|
for (int i = 1; i <= columnCount; i++) {
|
||||||
|
String columnLabel = metaData.getColumnLabel(i);
|
||||||
|
String columnValue = resultSet.getString(i);
|
||||||
|
result.put(columnLabel.toUpperCase(), columnValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package space.caoshd.otone.util;
|
||||||
|
|
||||||
|
public class SqlConstants {
|
||||||
|
|
||||||
|
private SqlConstants() {}
|
||||||
|
|
||||||
|
public static final String TABLE_DETAIL_SQL = "table.detail.sql";
|
||||||
|
|
||||||
|
public static final String TABLE_DETAIL_SQL_SCHEMA = "table.detail.sql.schema";
|
||||||
|
|
||||||
|
public static final String TABLE_DETAIL_SQL_SCHEMA_TABLE = "table.detail.sql.schema.table";
|
||||||
|
|
||||||
|
public static final String TABLE_DETAIL_LABEL_TABLE_NAME = "table.detail.label.table-name";
|
||||||
|
|
||||||
|
public static final String TABLE_DETAIL_LABEL_TABLE_COMMENT =
|
||||||
|
"table.detail.label.table-comment";
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package space.caoshd.otone.builder;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import space.caoshd.otone.entity.TableInfo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class TableBuilderTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void loadTableInfo() {
|
||||||
|
List<TableInfo> tableInfos =
|
||||||
|
TableBuilder.loadTableInfo();
|
||||||
|
System.out.println(tableInfos);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue