10.5.3. 多发比对 Java 接口
10.5.3.1. 简介
多发比对提供了 Java API,可供 JAVA 程序直接调用;用户只需要在Maven项目中引入sql-convert-runtime依赖即可使用 JAVA API。
10.5.3.2. 接口说明
接口签名:
public static Result<MultiplexOutput> multiplex(String sourceDialect, List<TargetDialect> targetDialectInfos, Boolean needTransfer, Boolean batchFlag, String traceId)
该接口方法位于sql-convert-runtime模块中的com.hundsun.lightdb.unisql.golang.Transformer类中
10.5.3.3. 接口请求参数
参数名 |
类型 |
是否必须 |
说明 |
---|---|---|---|
sourceDialect |
String |
是 |
源端数据库方言,取值范围为:oracle/mysql |
targetDialectInfos |
List<TargetDialect> |
是 |
比对目标数据库方言,可以选多个,存储到list中,具体存储内容在下面表格介绍 |
needTransfer |
Boolean |
是 |
业务DML是否需要SQL多发转换到目标库,true表示需要转换,false表示不需要转换, 默认为true |
batchFlag |
Boolean |
是 |
入参targetDialectInfos中是否已经包含了所有需要比对验证的多库信息,false表示本次接口调用已包含所有库信息,true表示需要组合10s内所有该入参标记为true的接口调用的库信息进行统一比对,默认为false(预留参数,尚未支持) |
traceId |
String |
否 |
用于查询比对的ID。如果入参targetDialectInfo中仅有一个成员,则本traceId为必填项,用于表明本次传入的1个目标库准备和哪些具有相同traceId的源/目标库一起进行结果比较验证,没有填写null。 |
参数名 |
类型 |
是否必须 |
说明 |
---|---|---|---|
targetDialect |
String |
是 |
目标数据库类型以及兼容模式(大小写均可),例如:gaussdb_oracle |
targetDbVersion |
String |
否 |
目标数据库版本(目前只有gaussdb_oracle有两个版本:500、505,默认505),不填则按照数据源配置中的默认版本 |
schemaName |
String |
否 |
多发执行时,会在每个目标数据库下指定的业务库或schema下执行sql,不填则按照数据源配置中的dbname执行sql |
sql |
String |
是 |
业务原始sql |
sqlParameters |
List<BindVariable> |
否 |
预编译sql语句的参数信息(如果业务原始sql中有绑定变量,则此参数必填),BindVariable结构在下面表格介绍 |
参数名 |
类型 |
是否必须 |
说明 |
---|---|---|---|
name |
String |
是 |
sql语句的绑定变量名(伪代码SQL中的@绑定变量的名字) |
type |
Integer |
是 |
预编译sql语句的绑定变量参数值类型(java.sql.Types中的具体值)支持范围见如下:数据类型支持范围和java.sql.Types映射值章节 |
value |
Object |
是 |
预编译sql语句的绑定变量参数的内容 |
10.5.3.4. 返回参数说明
参数名 |
类型 |
是否肯定有返回值 |
说明 |
---|---|---|---|
code |
Integer |
是 |
状态码,0表示成功,非0表示异常 |
message |
String |
是 |
比对信息描述,包括比对结果及比对错误信息原因等 |
data |
MultiplexOutput |
否 |
目标库多发发送时候traceId信息,里面只有一个属性,String traceId |