多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## MetadataManager MetadataManager负责数据库元信息维护,BeetlSQL3自带的SchemaMetadataManager能读取目前按照JDBC规范,读取所有的数据库信息(但是,每个库对JDBC规范,仍然有不同) `initMetadataManager`方法是DBStyle初始化的时候调用,返回MetaManager类,用于管理数据库的metadata信息, ```java public interface DBStyle { MetadataManager initMetadataManager(ConnectionSource cs); } ``` 定义如下 ```java public interface MetadataManager { boolean existTable(String tableName); TableDesc getTable(String name); Set<String> allTable(); void addTableVirtuals(String realTable,String virtual); } ``` 通常,可以根据JDBC规范直接调用DatabaseMetaData获取数据库表信息,参考代码`SchemaMetadataManager`,如果有些库不支持metadata,譬如drill,查询文件,不提供metadata,你需要使用其`NoSchemaMetaDataManager`,此类能接受多个POJO类,根据POJO的定义,解析成MetaData信息,有点类似Hibenrate那样根据POJO类生成数据库 ```java public NoSchemaMetaDataManager(List<Class> beans){ beans.forEach(bean->parseBean(bean)); } public void addBean(Class bean){ parseBean(bean); } protected void parseBean(Class bean){ } } ``` parseBean会解析bean,得出目标数据库表的信息