Skip to content

Commit c76dccd

Browse files
committed
完善 Oracle, 达梦 等数据库的表和字段结构查询
1 parent 6ca112f commit c76dccd

5 files changed

Lines changed: 85 additions & 45 deletions

File tree

APIJSONORM/src/main/java/apijson/orm/AbstractSQLConfig.java

Lines changed: 43 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,9 @@
55

66
package apijson.orm;
77

8-
import static apijson.JSONObject.KEY_CACHE;
9-
import static apijson.JSONObject.KEY_CAST;
10-
import static apijson.JSONObject.KEY_COLUMN;
11-
import static apijson.JSONObject.KEY_COMBINE;
12-
import static apijson.JSONObject.KEY_DATABASE;
13-
import static apijson.JSONObject.KEY_DATASOURCE;
14-
import static apijson.JSONObject.KEY_EXPLAIN;
15-
import static apijson.JSONObject.KEY_FROM;
16-
import static apijson.JSONObject.KEY_GROUP;
17-
import static apijson.JSONObject.KEY_HAVING;
18-
import static apijson.JSONObject.KEY_HAVING_AND;
19-
import static apijson.JSONObject.KEY_ID;
20-
import static apijson.JSONObject.KEY_JSON;
21-
import static apijson.JSONObject.KEY_NULL;
22-
import static apijson.JSONObject.KEY_ORDER;
23-
import static apijson.JSONObject.KEY_RAW;
24-
import static apijson.JSONObject.KEY_ROLE;
25-
import static apijson.JSONObject.KEY_SCHEMA;
26-
import static apijson.JSONObject.KEY_USER_ID;
27-
import static apijson.RequestMethod.DELETE;
28-
import static apijson.RequestMethod.GET;
29-
import static apijson.RequestMethod.GETS;
30-
import static apijson.RequestMethod.HEADS;
31-
import static apijson.RequestMethod.POST;
32-
import static apijson.RequestMethod.PUT;
33-
import static apijson.SQL.AND;
34-
import static apijson.SQL.NOT;
35-
import static apijson.SQL.ON;
36-
import static apijson.SQL.OR;
8+
import com.alibaba.fastjson.JSONArray;
9+
import com.alibaba.fastjson.JSONObject;
10+
import com.alibaba.fastjson.annotation.JSONField;
3711

3812
import java.util.ArrayList;
3913
import java.util.Arrays;
@@ -48,10 +22,6 @@
4822

4923
import javax.activation.UnsupportedDataTypeException;
5024

51-
import com.alibaba.fastjson.JSONArray;
52-
import com.alibaba.fastjson.JSONObject;
53-
import com.alibaba.fastjson.annotation.JSONField;
54-
5525
import apijson.JSON;
5626
import apijson.JSONResponse;
5727
import apijson.Log;
@@ -62,9 +32,11 @@
6232
import apijson.orm.Join.On;
6333
import apijson.orm.exception.NotExistException;
6434
import apijson.orm.model.Access;
35+
import apijson.orm.model.AllColumn;
36+
import apijson.orm.model.AllColumnComment;
37+
import apijson.orm.model.AllTable;
38+
import apijson.orm.model.AllTableComment;
6539
import apijson.orm.model.Column;
66-
import apijson.orm.model.DbaColumn;
67-
import apijson.orm.model.DbaTable;
6840
import apijson.orm.model.Document;
6941
import apijson.orm.model.ExtendedProperty;
7042
import apijson.orm.model.Function;
@@ -76,6 +48,36 @@
7648
import apijson.orm.model.Table;
7749
import apijson.orm.model.TestRecord;
7850

51+
import static apijson.JSONObject.KEY_CACHE;
52+
import static apijson.JSONObject.KEY_CAST;
53+
import static apijson.JSONObject.KEY_COLUMN;
54+
import static apijson.JSONObject.KEY_COMBINE;
55+
import static apijson.JSONObject.KEY_DATABASE;
56+
import static apijson.JSONObject.KEY_DATASOURCE;
57+
import static apijson.JSONObject.KEY_EXPLAIN;
58+
import static apijson.JSONObject.KEY_FROM;
59+
import static apijson.JSONObject.KEY_GROUP;
60+
import static apijson.JSONObject.KEY_HAVING;
61+
import static apijson.JSONObject.KEY_HAVING_AND;
62+
import static apijson.JSONObject.KEY_ID;
63+
import static apijson.JSONObject.KEY_JSON;
64+
import static apijson.JSONObject.KEY_NULL;
65+
import static apijson.JSONObject.KEY_ORDER;
66+
import static apijson.JSONObject.KEY_RAW;
67+
import static apijson.JSONObject.KEY_ROLE;
68+
import static apijson.JSONObject.KEY_SCHEMA;
69+
import static apijson.JSONObject.KEY_USER_ID;
70+
import static apijson.RequestMethod.DELETE;
71+
import static apijson.RequestMethod.GET;
72+
import static apijson.RequestMethod.GETS;
73+
import static apijson.RequestMethod.HEADS;
74+
import static apijson.RequestMethod.POST;
75+
import static apijson.RequestMethod.PUT;
76+
import static apijson.SQL.AND;
77+
import static apijson.SQL.NOT;
78+
import static apijson.SQL.ON;
79+
import static apijson.SQL.OR;
80+
7981
/**config sql for JSON Request
8082
* @author Lemon
8183
*/
@@ -133,8 +135,10 @@ public abstract class AbstractSQLConfig implements SQLConfig {
133135
TABLE_KEY_MAP.put(SysTable.class.getSimpleName(), SysTable.TABLE_NAME);
134136
TABLE_KEY_MAP.put(SysColumn.class.getSimpleName(), SysColumn.TABLE_NAME);
135137
TABLE_KEY_MAP.put(ExtendedProperty.class.getSimpleName(), ExtendedProperty.TABLE_NAME);
136-
TABLE_KEY_MAP.put(DbaTable.class.getSimpleName(), DbaTable.TABLE_NAME);
137-
TABLE_KEY_MAP.put(DbaColumn.class.getSimpleName(), DbaColumn.TABLE_NAME);
138+
TABLE_KEY_MAP.put(AllTable.class.getSimpleName(), AllTable.TABLE_NAME);
139+
TABLE_KEY_MAP.put(AllColumn.class.getSimpleName(), AllColumn.TABLE_NAME);
140+
TABLE_KEY_MAP.put(AllTableComment.class.getSimpleName(), AllTableComment.TABLE_NAME);
141+
TABLE_KEY_MAP.put(AllColumnComment.class.getSimpleName(), AllColumnComment.TABLE_NAME);
138142

139143
CONFIG_TABLE_LIST = new ArrayList<>(); // Table, Column 等是系统表 AbstractVerifier.SYSTEM_ACCESS_MAP.keySet());
140144
CONFIG_TABLE_LIST.add(Function.class.getSimpleName());
@@ -1042,8 +1046,8 @@ public String getSQLSchema() {
10421046
if (SysTable.TAG.equals(table) || SysColumn.TAG.equals(table) || ExtendedProperty.TAG.equals(table)) {
10431047
return SCHEMA_SYS; //SQL Server 在 sys 中的属性比 information_schema 中的要全,能拿到注释
10441048
}
1045-
if (DbaTable.TAG.equals(table) || DbaColumn.TAG.equals(table)) {
1046-
return ""; //Oracle, Dameng 的 dba_tables 和 all_tab_columns 表好像不属于任何 Schema
1049+
if (AllTable.TAG.equals(table) || AllColumn.TAG.equals(table) || AllTableComment.TAG.equals(table) || AllTableComment.TAG.equals(table)) {
1050+
return ""; //Oracle, Dameng 的 all_tables, dba_tables 和 all_tab_columns, dba_columns 表好像不属于任何 Schema
10471051
}
10481052

10491053
String sch = getSchema();

APIJSONORM/src/main/java/apijson/orm/model/DbaColumn.java renamed to APIJSONORM/src/main/java/apijson/orm/model/AllColumn.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
* @author Lemon
1212
*/
1313
@MethodAccess(POST = {}, PUT = {}, DELETE = {})
14-
public class DbaColumn {
15-
public static final String TAG = "DbaColumn";
16-
public static final String TABLE_NAME = "all_tab_columns";
14+
public class AllColumn {
15+
public static final String TAG = "AllColumn";
16+
public static final String TABLE_NAME = "ALL_TAB_COLUMNS";
1717

1818
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
2+
3+
This source code is licensed under the Apache License Version 2.0.*/
4+
5+
6+
package apijson.orm.model;
7+
8+
import apijson.MethodAccess;
9+
10+
/**SQL Server 在 sys 下的字段(列名)
11+
* @author Lemon
12+
*/
13+
@MethodAccess(POST = {}, PUT = {}, DELETE = {})
14+
public class AllColumnComment {
15+
public static final String TAG = "AllColumnComment";
16+
public static final String TABLE_NAME = "ALL_COL_COMMENTS";
17+
18+
}

APIJSONORM/src/main/java/apijson/orm/model/DbaTable.java renamed to APIJSONORM/src/main/java/apijson/orm/model/AllTable.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
* @author Lemon
1212
*/
1313
@MethodAccess(POST = {}, PUT = {}, DELETE = {})
14-
public class DbaTable {
15-
public static final String TAG = "DbaTable";
16-
public static final String TABLE_NAME = "dba_tables";
14+
public class AllTable {
15+
public static final String TAG = "AllTable";
16+
public static final String TABLE_NAME = "ALL_TABLES";
1717

1818
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
2+
3+
This source code is licensed under the Apache License Version 2.0.*/
4+
5+
6+
package apijson.orm.model;
7+
8+
import apijson.MethodAccess;
9+
10+
/**SQL Server 表属性
11+
* @author Lemon
12+
*/
13+
@MethodAccess(POST = {}, PUT = {}, DELETE = {})
14+
public class AllTableComment {
15+
public static final String TAG = "AllTableComment";
16+
public static final String TABLE_NAME = "ALL_TAB_COMMENTS";
17+
18+
}

0 commit comments

Comments
 (0)