项目简介
metax是一款数据库元数据操作工具包,它主要用于获取数据库信息、表、字段、主键、外键、存储过程、触发器、函数等元数据。它支持mysql、oracle、sql server等主流数据库产品,也支持C3P0、DBCP、Druid等数据库连接池。
设计目标
简单易用
线程安全
高性能
可拓展
依赖导入
gitee
https://gitee.com/caochenlei/repository/raw/master
com.caochenlei
metax
1.0.0
mysql
mysql-connector-java
5.1.18
com.oracle
ojdbc6
11.2.0.3
com.microsoft.sqlserver
sqljdbc4
4.0
快速使用
1、mysql+dbcp获取指定数据库所有表信息
注意:默认会获取表名、表备注、列名、列备注等等,无需其它设置,更多详细方法请往后阅读
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/mytest?user=root&password=root");
MetaLoader metaLoader = new MetaLoaderImpl(dataSource);
Set tableNames = metaLoader.getTableNames();
for (String tableName : tableNames) {
Table table = metaLoader.getTable(tableName);
PrintUtils.printTable(table);
}
2、oracle+dbcp获取指定数据库所有表信息
注意:默认会获取表名、表备注、列名、列备注等等,无需其它设置,更多详细方法请往后阅读
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:oracle:thin:erpuser/itcast@127.0.0.1:1521:ORCL");
MetaLoader metaLoader = new MetaLoaderImpl(dataSource);
Set tableNames = metaLoader.getTableNames();
for (String tableName : tableNames) {
Table table = metaLoader.getTable(tableName);
PrintUtils.printTable(table);
}
3、sql server+dbcp获取指定数据库所有表信息
注意:默认会获取表名、表备注、列名、列备注等等,无需其它设置,更多详细方法请往后阅读
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mytest;user=sa;password=adminsa");
MetaLoader metaLoader = new MetaLoaderImpl(dataSource);
Set tableNames = metaLoader.getTableNames();
for (String tableName : tableNames) {
Table table = metaLoader.getTable(tableName);
PrintUtils.printTable(table);
}
开发文档
1、获取模式
注意:为了进一步提升软件性能,通过等级来进行控制信息获取,这样能够避免读取不必要的信息而影响性能
获取类型
最小模式
标准模式
最大模式
驱动信息
Yes
Yes
Yes
数据库信息
Yes
Yes
Yes
表
Yes
Yes
Yes
列
Yes
Yes
Yes
主键
Yes
Yes
Yes
外键
No
Yes
Yes
约束
No
Yes
Yes
索引
No
Yes
Yes
视图
No
No
Yes
权限
No
No
Yes
触发器
No
No
Yes
示例:默认获取等级是标准模式,默认情况可省略SchemaInfoLevel.standard()
// 最小模式
Table table = metaLoader.getTable(tableName, SchemaInfoLevel.min());
PrimaryKey primaryKey = table.getPrimaryKey();
// 标准模式
Table table = metaLoader.getTable(tableName, SchemaInfoLevel.standard());
PrimaryKey primaryKey = table.getPrimaryKey();
// 最大模式
Table table = metaLoader.getTable(tableName, SchemaInfoLevel.max());
PrimaryKey primaryKey = table.getPrimaryKey();
2、常用方法
注意:以下方法为MetaLoader接口中的方法
方法
描述
Set getTableNames()
获取所有表名
Table getTable(String tableName)
获取指定名称的表
Table getTable(String tableName,SchemaInfoLevel schemaLevel)
获取指定名称、指定级别的表
Table getTable(String tableName,SchemaInfo schemaInfo)
获取指定名称、指定Schema的表
Set getSchemaInfos()
获取所有的Schema信息
Schema getSchema()
获取当前的Schema信息
Schema getSchema(SchemaInfo schemaInfo)
获取指定Schema的Schema信息
Set getProcedureNames()
获取所有存储过程的名称
Procedure getProcedure(String procedureName)
获取指定名称的存储过程
Map getProcedures()
获取所有的存储过程
Set getTriggerNames()
获取所有触发器的名称
Trigger getTrigger(String triggerName)
获取指定名称的触发器
Map getTriggers()
获取所有的触发器
Set getFunctionNames()
获取所有函数的名称
Function getFunction(String name)
获取指定名称的函数
Map getFunctions()
获取所有的函数
Database getDatabase()
获取数据库的信息(速度太慢,已废弃)
Database getDatabase(SchemaInfoLevel level)
获取指定级别数据库的信息(速度太慢,已废弃)
体系结构
1、Meta Data Architecture
2、Soft Architecture
联系作者