然后也是增删改查
增加
//entity 这个参数是定义的实体 map参数是实体里的属性和要添加的值
StatementInstance hasSql = var("p").isa(entity);
for (Map.Entry entry : map.entrySet()) {
hasSql = hasSql.has(entry.getKey(), entry.getValue());
}
GraqlInsert query = Graql.insert(hasSql);
GraknClient.Transaction.QueryFuture> execute = transaction.execute(query);
List conceptMaps = execute.get();
insertId = conceptMaps.get(0).get("p").id().toString();
transaction.commit();
删除
//参数为id id即数据库的自己的 ‘VXXXX’
GraqlDelete query = Graql.match(
var("p").id(id)
).delete(var("p"));
transaction.execute(query);
transaction.commit();
修改
//参数id 是要修改的那条数据的id 是“VXXX”。 参数map是要修改的字段和字段的值
//1。 删除属性的值
for (Map.Entry entry : map.entrySet()) {
GraqlDelete delete_query = Graql.match(
var("m").id(id).has(entry.getKey(), var("rn"))
).delete(var("rn"));
transaction.execute(delete_query);
}
//2. 添加属性
StatementInstance has = null;
for (Map.Entry entry : map.entrySet()) {
if (null == has) {
has = var("m").has(entry.getKey(), entry.getValue());
} else {
has = has.has(entry.getKey(), entry.getValue());
}
}
GraqlInsert insert_query = Graql.match(
var("m").id(id)
).insert(
has
);
transaction.execute(insert_query);
transaction.commit();
查
//参数为entity 实体名 参数params为hashmap "name"=>["like","测试"] 参数order为排序方式
String queryEntity = " $" + entity + " isa " + entity;
//显示的值
for(Map.Entry> entry: params.entrySet()) {
queryEntity = queryEntity + ", has " + entry.getKey()+ " $" + entry.getKey();
}
queryEntity += ";";
for(Map.Entry> entry: params.entrySet()) {
if(entry.getValue().size() > 0) {
queryEntity = queryEntity + " $" + entry.getKey() + " " + queryMap.get(entry.getValue().get(0)) + " '" + entry.getValue().get(1) + "';";
}
}
List queryAsList = Arrays.asList(
"match ",
queryEntity,
"get;sort $"+order+" asc;"
);
System.out.println("\nQuery:\n" + String.join("\n", queryAsList));
String query = String.join("", queryAsList);
List> result = new ArrayList<>();
GraknClient.Transaction.QueryFuture> execute = transaction.execute((GraqlGet) parse(query));
List answers = execute.get();
当然最基本的节点操作就是以上的这些方法。基本的入门应该没问题了
后续如果有需要大的话
会将优化好的代码和关系的操作开源到github上