1.9.3. 统一SQL Java 接口
1.9.3.1. 简介
统一SQL提供了 Java API,可供 JAVA 程序直接调用;用户只需要在Maven项目中引入sql-convert-runtime依赖即可使用 JAVA API,具体可参考 集成统一SQL代理 。
1.9.3.2. SQL转换
1.9.3.2.1. 接口签名
public static String parse(String sql, String sourceDialect, String targetDialect) {}
public static String parse(String sql, String sourceDialect, String targetDialect, long sessionId) {}
该接口方法位于sql-convert-runtime模块中的com.hundsun.lightdb.unisql.golang.Transformer类中。
1.9.3.2.2. 接口请求参数
JAVA 接口的每一项参数说明如下:
参数名 |
类型 |
是否必须 |
说明 |
示例 |
---|---|---|---|---|
sql |
string |
是 |
源SQL语句 |
“select name, avg(score) from student_score group by name” |
sourceDialect |
string |
是 |
源数据库方言名称,具体可查看 数据库支持范围 中的 |
ORACLE |
targetDialect |
string |
是 |
目标数据库方言名称,具体可查看 数据库支持范围 中的 |
LIGHTDB_ORACLE |
sessionId |
long |
否 |
会话ID |
1.9.3.2.4. 调用示例
本例子使用标准的 JAVA 测试用例展示该接口的使用方式,示例代码如下:
@Test
public void parseTest() {
String parsedSql = Transformer.parse("SELECT MEDIAN(amount) AS median_amount FROM aggregate_sales " +
"WHERE product_id = 1 ORDER BY median_amount", DbType.ORACLE.name(), DbType.POSTGRESQL.name());
System.out.println("统一SQL转换后sql " + parsedSql);
}
示例执行结果,Oracle的median函数将被转换为PostgreSQL的percentile_cont分析函数。
统一SQL转换后sql SELECT percentile_cont(5e-01) WITHIN GROUP (ORDER BY amount) AS median_amount FROM aggregate_sales WHERE product_id=1 ORDER BY median_amount
1.9.3.3. 创建会话
1.9.3.3.1. 接口签名
public static Long createSession() {}
1.9.3.3.2. 接口请求参数
无
1.9.3.3.3. 接口返回参数
返回类型是一个 Long,会话ID
1.9.3.4. 销毁会话
1.9.3.4.1. 接口签名
public static void freeSession(Long sessionId) {}
1.9.3.4.3. 接口返回参数
无
1.9.3.5. 参数设置
1.9.3.5.1. 接口签名
public static void setSessionParamStr(String paramName, String paramValue, long sessionId) {}
1.9.3.5.2. 接口请求参数
JAVA 接口的每一项参数说明如下:
参数名 |
类型 |
是否必须 |
说明 |
示例 |
---|---|---|---|---|
paramName |
String |
是 |
参数名 |
“unisql.skip” |
paramValue |
String |
是 |
参数值 |
“true” |
sessionId |
long |
是 |
会话ID |
1.9.3.5.3. 接口返回参数
无