mysql存储过程处理表外键_metax: metax是一款数据库元数据操作工具包,它主要用于获取数据库信息、表、字段、主键、外键、存储过程、触发器、函数等元数据。它支持mysql、oracle、sq...

项目简介

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

20200727132948.jpg

2、Soft Architecture

20200727135603.jpg

联系作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值