优化: 优化获取表 多数据库支持
parent
1f37b2eab6
commit
8a8fe969a3
@ -1,52 +0,0 @@
|
|||||||
package space.caoshd.otone.builder;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import space.caoshd.otone.entity.IndexInfo;
|
|
||||||
import space.caoshd.otone.helper.PropHelper;
|
|
||||||
import space.caoshd.otone.util.DBUtils;
|
|
||||||
import space.caoshd.otone.util.JsonUtils;
|
|
||||||
import space.caoshd.otone.util.PathConsts;
|
|
||||||
import space.caoshd.otone.util.SqlConsts;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class IndexBuilder {
|
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(IndexBuilder.class);
|
|
||||||
|
|
||||||
private static final PropHelper CONFIG =
|
|
||||||
new PropHelper(PathConsts.MYSQL_PROPERTIES_PATH);
|
|
||||||
|
|
||||||
public static List<IndexInfo> loadIndexInfo(String schemaName, String tableName) {
|
|
||||||
|
|
||||||
String sql = CONFIG.getString(SqlConsts.INDEX_SQL_SCHEMA_TABLE);
|
|
||||||
List<String> params = Arrays.asList(schemaName, tableName);
|
|
||||||
List<Map<String, String>> indexes = DBUtils.list(sql, params);
|
|
||||||
|
|
||||||
List<IndexInfo> result = new ArrayList<>();
|
|
||||||
for (Map<String, String> index : indexes) {
|
|
||||||
result.add(createIndexInfo(index));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IndexInfo createIndexInfo(Map<String, String> index) {
|
|
||||||
IndexInfo result = new IndexInfo();
|
|
||||||
|
|
||||||
String columnName = CONFIG.getString(SqlConsts.LABEL_COLUMN_NAME);
|
|
||||||
result.setColumnName(index.get(columnName));
|
|
||||||
|
|
||||||
String indexName = CONFIG.getString(SqlConsts.LABEL_INDEX_NAME);
|
|
||||||
result.setIndexName(index.get(indexName));
|
|
||||||
|
|
||||||
String nonUnique = CONFIG.getString(SqlConsts.LABEL_NON_UNIQUE);
|
|
||||||
result.setNonUnique(index.get(nonUnique));
|
|
||||||
|
|
||||||
LOGGER.debug(JsonUtils.toJson(result));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
package space.caoshd.otone.entity;
|
|
||||||
|
|
||||||
public class IndexInfo {
|
|
||||||
|
|
||||||
private String nonUnique;
|
|
||||||
|
|
||||||
private String indexName;
|
|
||||||
|
|
||||||
private String columnName;
|
|
||||||
|
|
||||||
public String getNonUnique() {
|
|
||||||
return nonUnique;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNonUnique(String nonUnique) {
|
|
||||||
this.nonUnique = nonUnique;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIndexName() {
|
|
||||||
return indexName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIndexName(String indexName) {
|
|
||||||
this.indexName = indexName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getColumnName() {
|
|
||||||
return columnName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setColumnName(String columnName) {
|
|
||||||
this.columnName = columnName;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,63 @@
|
|||||||
|
package space.caoshd.otone.helper;
|
||||||
|
|
||||||
|
import space.caoshd.otone.util.PathConsts;
|
||||||
|
|
||||||
|
public class SqlUtils {
|
||||||
|
|
||||||
|
public static final String TABLE_SQL = "table.sql";
|
||||||
|
public static final String COLUMN_SQL = "column.sql";
|
||||||
|
public static final String LABEL_TABLE_NAME = "label.table_name";
|
||||||
|
public static final String LABEL_TABLE_SCHEMA = "label.table_schema";
|
||||||
|
public static final String LABEL_TABLE_COMMENT = "label.table_comment";
|
||||||
|
public static final String LABEL_COLUMN_NAME = "label.column_name";
|
||||||
|
public static final String LABEL_COLUMN_COMMENT = "label.column_comment";
|
||||||
|
public static final String LABEL_DATA_TYPE = "label.data_type";
|
||||||
|
public static final String LABEL_AUTO_INCREMENT = "label.auto_increment";
|
||||||
|
public static final String LABEL_PRIMARY = "label.primary";
|
||||||
|
public static final String VALUE_AUTO_INCREMENT_YES = "1";
|
||||||
|
public static final String VALUE_PRIMARY_YES = "1";
|
||||||
|
private static final PropHelper CONFIG = new PropHelper(PathConsts.MYSQL_PROPERTIES_PATH);
|
||||||
|
|
||||||
|
private SqlUtils() {}
|
||||||
|
|
||||||
|
public static String getTableSql() {
|
||||||
|
return CONFIG.getString(TABLE_SQL);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getColumnSql() {
|
||||||
|
return CONFIG.getString(COLUMN_SQL);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLabelTableName() {
|
||||||
|
return CONFIG.getString(LABEL_TABLE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLabelTableSchema() {
|
||||||
|
return CONFIG.getString(LABEL_TABLE_SCHEMA);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLabelTableComment() {
|
||||||
|
return CONFIG.getString(LABEL_TABLE_COMMENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLabelColumnComment() {
|
||||||
|
return CONFIG.getString(LABEL_COLUMN_COMMENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLabelColumnName() {
|
||||||
|
return CONFIG.getString(LABEL_COLUMN_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLabelDataType() {
|
||||||
|
return CONFIG.getString(LABEL_DATA_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLabelAutoIncrement() {
|
||||||
|
return CONFIG.getString(LABEL_AUTO_INCREMENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getLabelPrimary() {
|
||||||
|
return CONFIG.getString(LABEL_PRIMARY);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,23 +0,0 @@
|
|||||||
package space.caoshd.otone.util;
|
|
||||||
|
|
||||||
public class SqlConsts {
|
|
||||||
|
|
||||||
public static final String TABLE_SQL = "table.sql";
|
|
||||||
public static final String TABLE_SQL_SCHEMA = "table.sql.schema";
|
|
||||||
public static final String TABLE_SQL_SCHEMA_TABLE = "table.sql.schema.table";
|
|
||||||
public static final String COLUMN_SQL_SCHEMA_TABLE = "column.sql.schema.table";
|
|
||||||
public static final String INDEX_SQL_SCHEMA_TABLE = "index.sql.schema.table";
|
|
||||||
public static final String LABEL_TABLE_NAME = "label.table_name";
|
|
||||||
public static final String LABEL_TABLE_SCHEMA = "label.table_schema";
|
|
||||||
public static final String LABEL_TABLE_COMMENT = "label.table_comment";
|
|
||||||
public static final String LABEL_COLUMN_NAME = "label.column_name";
|
|
||||||
public static final String LABEL_COLUMN_COMMENT = "label.column_comment";
|
|
||||||
public static final String LABEL_INDEX_NAME = "label.index_name";
|
|
||||||
public static final String LABEL_NON_UNIQUE = "label.non_unique";
|
|
||||||
public static final String LABEL_DATA_TYPE = "label.data_type";
|
|
||||||
public static final String LABEL_EXTRA = "label.extra";
|
|
||||||
public static final String VALUE_AUTO_INCREMENT = "auto_increment";
|
|
||||||
|
|
||||||
private SqlConsts() {}
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,5 @@
|
|||||||
|
table.sql=select table_schema, table_name, remarks as table_comment from information_schema.tables where table_schema = current_schema()
|
||||||
|
column.sql=select column_name, remarks as column_comment, data_type, case when is_identity = 'YES' then '1' else '0' end as auto_increment from information_schema.columns where table_schema = ? and table_name = ?
|
||||||
|
label.table_schema=TABLE_SCHEMA
|
||||||
|
label.table_name=TABLE_NAME
|
||||||
|
label.table_comment=TABLE_COMMENT
|
@ -1,15 +1,10 @@
|
|||||||
table.sql=select * from information_schema.tables where TABLE_SCHEMA not in ('mysql', 'information_schema', 'performance_schema', 'sys')
|
|
||||||
table.sql.schema=select * from information_schema.tables where table_schema = ?
|
|
||||||
table.sql.schema.table=select * from information_schema.tables where table_schema = ? and table_name = ?
|
|
||||||
column.sql.schema.table=select * from information_schema.columns where table_schema = ? and table_name = ?
|
|
||||||
index.sql.schema.table=select * from information_schema.statistics where table_schema = ? and table_name = ?
|
|
||||||
|
|
||||||
|
table.sql=select table_schema, table_name, table_comment from information_schema.tables where table_schema = DATABASE();
|
||||||
|
column.sql=select column_name, column_comment, data_type, locate('auto_increment', extra) > 0 as auto_increment, case when column_key = 'PRI' then '1' else '0' end as `primary` from information_schema.columns where table_schema = ? and table_name = ?
|
||||||
label.table_schema=TABLE_SCHEMA
|
label.table_schema=TABLE_SCHEMA
|
||||||
label.table_name=TABLE_NAME
|
label.table_name=TABLE_NAME
|
||||||
label.table_comment=TABLE_COMMENT
|
label.table_comment=TABLE_COMMENT
|
||||||
label.column_name=COLUMN_NAME
|
label.column_name=COLUMN_NAME
|
||||||
label.column_comment=COLUMN_COMMENT
|
label.column_comment=COLUMN_COMMENT
|
||||||
label.index_name=INDEX_NAME
|
|
||||||
label.non_unique=NON_UNIQUE
|
|
||||||
label.data_type=DATA_TYPE
|
label.data_type=DATA_TYPE
|
||||||
label.extra=EXTRA
|
label.primary=PRIMARY
|
||||||
|
Loading…
Reference in New Issue