上传 upload/tryUpload
下面介绍上传对象的方法 upload
、tryUpload
方法。
关于 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
...