1818public class DBScanner {
1919
2020 private final Connection connection ;
21- private final DBMetaData dbMetaData ;
21+ private final Properties info ;
2222 private final DatabaseMetaData metaData ;
2323 private final String catalog ;
2424 private final String schema ;
@@ -29,21 +29,21 @@ public DBScanner(Connection connection, Properties info) throws SQLException {
2929 this .schema = connection .getSchema ();
3030 this .metaData = connection .getMetaData ();
3131 this .catalog = connection .getCatalog ();
32- this .dbMetaData = new DBMetaData ( info ) ;
32+ this .info = info ;
3333 String jdbcKey = JdbcPropertyUtils .getOrGenerateJdbcKey (info ,this .schema );
3434 this .dbTableSerializableHelper = new DBTableSerializableHelper (jdbcKey );
3535 }
3636
3737
3838 private void loadDbTableInfo (String tableName , DbTable tableInfo ) throws SQLException {
3939 String dbTableName = tableInfo .getName ();
40- List <String > keys = dbTableSerializableHelper .loadPrimaryKeyByLocalFile (tableInfo .getName ());
40+ List <String > keys = dbTableSerializableHelper .loadTablePrimaryKeysByKeyFile (tableInfo .getName ());
4141 if (dbTableSerializableHelper .hasSerialize (dbTableName )) {
4242 DbTable dbTableCache = dbTableSerializableHelper .deserialize (dbTableName );
4343 tableInfo .setColumns (dbTableCache .getColumns ());
4444 tableInfo .setPrimaryKeys (dbTableCache .getPrimaryKeys ());
45- tableInfo .loadLocalPrimaryKeys (keys );
46- tableInfo .reloadPrimaryColumns ();
45+ tableInfo .validateAndAddPrimaryKeys (keys );
46+ tableInfo .reloadPrimaryKeyColumns ();
4747 return ;
4848 }
4949
@@ -67,8 +67,8 @@ private void loadDbTableInfo(String tableName, DbTable tableInfo) throws SQLExce
6767 tableInfo .addPrimaryKey (pkColumn );
6868 }
6969 pkRs .close ();
70- tableInfo .loadLocalPrimaryKeys (keys );
71- tableInfo .reloadPrimaryColumns ();
70+ tableInfo .validateAndAddPrimaryKeys (keys );
71+ tableInfo .reloadPrimaryKeyColumns ();
7272
7373 dbTableSerializableHelper .serialize (tableInfo );
7474 }
@@ -77,6 +77,7 @@ private void loadDbTableInfo(String tableName, DbTable tableInfo) throws SQLExce
7777 * 扫描数据库中的所有表、字段和主键信息,并缓存
7878 */
7979 public DBMetaData loadMetadata () throws SQLException {
80+ DBMetaData dbMetaData = new DBMetaData (info );
8081 DatabaseMetaData metaData = connection .getMetaData ();
8182 String catalog = connection .getCatalog ();
8283 String schema = connection .getSchema ();
@@ -98,29 +99,28 @@ public DBMetaData loadMetadata() throws SQLException {
9899
99100
100101 /**
101- * 更新对应表的元数据信息
102+ * 获取元数据表信息
102103 *
103- * @param dbMetaData 数据库下的所有元数据信息
104+ * @param tableNames 查询的表名称
104105 * @throws SQLException SQLException
105106 */
106- public void updateMetadata ( DBMetaData dbMetaData ) throws SQLException {
107+ public List < DbTable > findTableMetadata ( List < String > tableNames ) throws SQLException {
107108 DatabaseMetaData metaData = connection .getMetaData ();
108109 String catalog = connection .getCatalog ();
109110 String schema = connection .getSchema ();
110111 ResultSet tables = metaData .getTables (catalog , schema , "%" , new String []{"TABLE" });
111- List <DbTable > updateList = new ArrayList <>();
112+ List <DbTable > tableList = new ArrayList <>();
112113 while (tables .next ()) {
113114 String tableName = tables .getString ("TABLE_NAME" );
114115 String remarks = tables .getString ("REMARKS" );
115- if (dbMetaData . isSubjectUpdate (tableName )) {
116+ if (tableNames . contains (tableName . toUpperCase () )) {
116117 DbTable tableInfo = new DbTable (tableName , remarks );
117118 this .loadDbTableInfo (tableName , tableInfo );
118- updateList .add (tableInfo );
119+ tableList .add (tableInfo );
119120 }
120121 }
121122 tables .close ();
122- dbMetaData .updateDbTable (updateList );
123- dbMetaData .success ();
123+ return tableList ;
124124 }
125125
126126
0 commit comments