# DBMetadata **Repository Path**: dhd_index/DBMetadata ## Basic Information - **Project Name**: DBMetadata - **Description**: 数据库元数据 - 通用工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 134 - **Created**: 2016-09-15 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #数据库元数据 本工具可用于数据库表和字段的查询,以及数据库元数据的进一步使用。 目前支持以下数据库(都能正确获取注释信息): 1. `Oracle` 2. `Mysql` 3. `MariaDB` 4. `SQLite` 5. `Hsqldb` 6. `PostgreSQL` 7. `DB2` 8. `SqlServer(2005+)` - 必须使用jtds驱动 #本工具目前分为三部分 ##DBMetadata-core 数据库元数据核心部分,该部分完全独立,不依赖任何第三方,获取元数据部分的代码参考了MyBatis Generator。 如果你要连接数据库,需要有该数据库的JDBC驱动。 ###使用方法: ###1. 引入jar包或者Maven依赖: ```xml com.github.abel533 DBMetadata-core 0.1.1 ``` 下载Jar包:[DBMetadata-core-x.x.x.jar](https://oss.sonatype.org/content/repositories/releases/com/github/abel533/DBMetadata-core/) ###2. 使用方法 首先创建一个`SimpleDataSource`: ```java SimpleDataSource dataSource = new SimpleDataSource( Dialect.MYSQL, "jdbc:mysql://localhost:3306/test", "root", "" ); ``` 除了上面这种方式外,还可以使用`SimpleDataSource(Dialect dialect, DataSource dataSource)`这个构造方法,直接使用其他的`DataSource`。 然后就是用创建好的`dataSource`去创建`DBMetadataUtils`: ```java DBMetadataUtils dbMetadataUtils = new DBMetadataUtils(dataSource); ``` 创建一个`DatabaseConfig`,调用`introspectTables(config)`方法获取数据库表的元数据: ```java DatabaseConfig config = new DatabaseConfig("mydb", null); List list = dbMetadataUtils.introspectTables(config); ``` 这里需要注意`DatabaseConfig`,他有下面三个构造方法: - DatabaseConfig() - DatabaseConfig(String catalog, String schemaPattern) - DatabaseConfig(String catalog, String schemaPattern, String tableNamePattern) 一般情况下我们需要设置`catalog`和`schemaPatter`,还可以设置`tableNamePattern`来限定要获取的表。 其中`schemaPatter`和`tableNamePattern`都支持sql的`%`和`_`匹配。 获取数据库表的元数据后,我们就可以利用这些数据了。 下面代码是简单的将这些信息输出到控制台: ```java for (IntrospectedTable table : list) { System.out.println(table.getName() + ":"); for (IntrospectedColumn column : table.getAllColumns()) { System.out.println(column.getName() + " - " + column.getJdbcTypeName() + " - " + column.getJavaProperty() + " - " + column.getJavaProperty() + " - " + column.getFullyQualifiedJavaType().getFullyQualifiedName() + " - " + column.getRemarks()); } } ``` ##DBMetadata-generator 利用数据库元数据,根据模板生成一些内容。 该项目目前只提供了一个`BeetlTemplate`,只有两个静态方法,这只是一个简单的例子。 使用方法如下: ```java public static void main(String[] args) throws IOException, SQLException { DBMetadataUtils dbUtils = new DBMetadataUtils( new SimpleDataSource(Dialect.ORACLE, "jdbc:oracle:thin:@//localhost/orcl", "user", "")); List tables = dbUtils.introspectTables(dbUtils.getDefaultConfig()); DBMetadataUtils.sortTables(tables); BeetlTemplate.exportDatabaseHtml(tables, "d:/test", "db"); for (IntrospectedTable table : tables) { BeetlTemplate.exportTableHtml(table, "d:/test/tables", table.getName()); } } ``` ##DBMetadata-swing 这个子项目也算是一个对**DBMetadata-core**的使用,通过上述工具获取元数据后,使用swing界面展示数据,并且可以通过查询来筛选符合要求的数据。 这个项目除了实现基本的表和字段查询外,还算是一个基于界面使用该工具的基础,你可以在该项目基础上增加其他功能。 ###启动 运行`com.github.abel533.Launch`即可启动本项目。 本项目提供打包好的程序可供直接使用。 下载地址:[http://pan.baidu.com/s/1poGI6](http://pan.baidu.com/s/1poGI6) **程序为绿色版,需要jre1.7+支持** **Windows** 根据你jre是32位还是64位来选择dbs_32.exe或者dbs_64.exe来运行。 **linux** 首先给run.sh增加执行权限,然后运行run.sh ###界面预览 登录界面 ![登录](http://img.blog.csdn.net/20150323200233549) 主界面 ![主界面](http://img.blog.csdn.net/20150323200217186)