上传 upload/tryUpload

下面介绍上传对象的方法 uploadtryUpload 方法。

关于 upload 方法

从可维护性和代码简洁性的角度来看,使用映射(Map)结构来存储多个键值对数据,并通过变量传递映射对象的方式,可以更有效地管理和操作多个数据实体。

方法如下:

public void upload(final Map<String, Entity> variableObjectMap)

其中 Map 的 key 表示要上传对象的名称,变量名称可以使用三种类型的字符:字母,数字或下划线,且首字符必须是字母;value 表示要上传的对象 。

示例如下:

@Test
public void testUpload() throws IOException {
    DBConnection dbConnection = new DBConnection();
    dbConnection.connect("192.168.0.68", 8848);

    Entity dict = dbConnection.run("dict(1 2 3,`IBM`MSFT`GOOG)");
    Map<String, Entity> map = new HashMap<String, Entity>();
    map.put("dict", dict);
    dbConnection.upload(map);
    Entity dict1 = dbConnection.run("dict");
    System.out.println(dict1.getString());
}

执行结果:

Connect to 192.168.0.68:8848.
{1,2,3}->{IBM,MSFT,GOOG}

关于 tryUpload 方法

前一节中的 tryRun 方法,upload 方法在进行上传对象时也进行了加锁处理,并且和 tryRun 方法执行时使用的是同一把锁,因此 tryUpload 方法的逻辑与 tryRun 方法同理。值得注意的是,tryUpload 方法在遇到有锁的时候会直接抛出 IOException 异常,而 tryRun方法方法会返回 null 值。

示例如下:

@Test
public void test_tryUpload() throws IOException{
    DBConnection dbConnection = new DBConnection();
    dbConnection.connect("192.168.0.68", 8848);

    BasicTable tb = (BasicTable) dbConnection.run("table(1..100 as id,take(`aaa,100) as name)");
    Map<String, Entity> upObj = new HashMap<>();
    upObj.put("table_uploaded",tb);
    dbConnection.tryUpload(upObj);
    Entity entity = dbConnection.run("table_uploaded");
    System.out.println(entity.getString());
}

执行结果:

Connect to 192.168.0.68:8848.
id name
-- ----
1  aaa 
2  aaa 
3  aaa 
4  aaa 
5  aaa 
6  aaa 
7  aaa 
8  aaa 
9  aaa 
10 aaa 
11 aaa 
12 aaa 
13 aaa 
14 aaa 
15 aaa 
16 aaa 
17 aaa 
18 aaa 
19 aaa 
20 aaa 
...