跳到主要内容

6.3.1 数据库提供者

引入和准备​

implementation 'net.hasor:dataway-meta-jdbc:5.0.0'

应用提供 JDBC 驱动和 DataSource,本模块使用 dbVisitor 访问数据库。

建表脚本​

选择数据库,复制并执行以下脚本,创建 interface_info、interface_release 及索引。使用自定义名称时,按表与字段映射同步调整脚本。

CREATE TABLE interface_info (
api_id VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL PRIMARY KEY,
api_method VARCHAR(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
api_path VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
api_status VARCHAR(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
api_comment VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
api_type VARCHAR(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
api_script MEDIUMTEXT NOT NULL,
api_schema MEDIUMTEXT NOT NULL,
api_sample MEDIUMTEXT NOT NULL,
api_option MEDIUMTEXT NOT NULL,
api_create_time VARCHAR(32) NOT NULL,
api_gmt_time VARCHAR(32) NOT NULL,
api_revision BIGINT NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

CREATE TABLE interface_release (
pub_id VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL PRIMARY KEY,
pub_api_id VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
pub_method VARCHAR(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
pub_path VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
pub_status VARCHAR(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
pub_comment VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
pub_type VARCHAR(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
pub_script MEDIUMTEXT NOT NULL,
pub_schema MEDIUMTEXT NOT NULL,
pub_sample MEDIUMTEXT NOT NULL,
pub_option MEDIUMTEXT NOT NULL,
pub_release_time VARCHAR(32) NOT NULL,
pub_revision BIGINT NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

CREATE UNIQUE INDEX uk_interface_info ON interface_info (api_method, api_path);
CREATE INDEX idx_interface_release_api ON interface_release (pub_api_id);
CREATE INDEX idx_interface_release_path ON interface_release (pub_method, pub_path, pub_status);

脚本也随 JAR 发布,位于 META-INF/dataway/schema/ 目录下的 mysql.sql、postgresql.sql、oracle.sql、sqlserver.sql、h2.sql。

创建访问层​

import net.hasor.dataway.dal.ApiDataAccessLayer;
import net.hasor.dataway.dal.jdbc.JdbcDataAccessLayer;

ApiDataAccessLayer metadata = new JdbcDataAccessLayer(source);

通过 DatawayConfig.dataAccessLayer(metadata) 配置访问层。单参数构造方法使用默认表名 interface_info、interface_release;需要前缀时使用 new JdbcDataAccessLayer(source, "dw_"),对应表名为 dw_interface_info、dw_interface_release,建表脚本需使用相同名称。

元数据可使用主库或独立库。默认使用本地事务,加入宿主事务时传入 JdbcExecutor。

一致性​

批次在同一连接中执行,更新与删除使用版本条件;版本冲突或重复路由会报告冲突。方法、路径和标识字段应使用大小写敏感比较,按所选数据库脚本及连接要求配置。

自定义存储名称见表字段映射。