java neo4j 参数的使用测试

//---传参数------------------------------------------------------------
    //参数可以用  Values.parameters("aid", 25,"person_name", person, "company_name", company), 也可以是Map
    //需要用到参数的地方
    // 1) where 语句中的比对条件 = >< != $p
    // 2) where id(a) in [1,2,3,4] 如何设置参数?
    // 3) 字段 CREATE (:Company {name: $name})
    // 4) set  b+={....}  如何设置参数?

  
    @Test
    public void TestUseProps() {
        String cql = "match (a:User)-[r]-(b) where id(a)=$aid return a,b,r";
        try (Session session = GraphDb.newSession()) {
            List<Record> list = session.run(cql, Values.parameters("aid", 25)).list();
            System.out.println(list.size());
        }
    }

    @Test
    public void TestUseProps2() {
        String cql = "match (a:User)-[r]-(b) where id(a)=$aid return a,b,r";
        try (Session session = GraphDb.newSession()) {
            Map<String, Object> pp = new HashMap<>();
            pp.put("aid", 25);
            List<Record> list = session.run(cql, pp).list();
            System.out.println(list.size());
        }
    }


    // in
    @Test
    public void TestUseProps3() {
        String cql = "match (a) where id(a) in $ids return a";
        try (Session session = GraphDb.newSession()) {
            Map<String, Object> pp = new HashMap<>();
            pp.put("ids", new int[]{5, 74});
            List<Record> list = session.run(cql, pp).list();
            System.out.println(list.size());
        }
    }
    /*
    2.6.5. Create node with properties
    Parameters.
    {
      "props" : {
        "name" : "Andy",
        "position" : "Developer"
      }
    }
    Query.

    CREATE ($props)
     */
    @Test
    public void TestUseProps4() {
        String cql = "CREATE ($props) ";
        try (Session session = GraphDb.newSession()) {

            String json="{\n" +
                    "      \"props\" : {\n" +
                    "        \"name\" : \"Andy\",\n" +
                    "        \"position\" : \"Developer\"\n" +
                    "      }\n" +
                    "    }";
            Map map = js.toMap(json);

            session.run(cql, map).list();
            System.out.println("ok");
        }
    }
    @Test // set n={...}
    public void TestUseProps5() {
        String cql = "UNWIND $props AS properties\n" +
                "CREATE (n:Person)\n" +
                "SET n = properties\n" +
                "RETURN n";
        try (Session session = GraphDb.newSession()) {

            String json="{\n" +
                    "      \"props\" : {\n" +
                    "        \"name\" : \"Andy1\",\n" +
                    "        \"position\" : \"Developer1\"\n" +
                    "      }\n" +
                    "    }";
            Map map = js.toMap(json);

            List<Record> list = session.run(cql, map).list();
            System.out.println(list.size());
        }
    }

    @Test   // set n+={...}
    public void TestUseProps6() {
        String cql = "UNWIND $props AS properties\n" +
                "match (n) where id(n)=25 \n" +
                "SET n += properties\n" +
                "RETURN n";
        try (Session session = GraphDb.newSession()) {

            String json="{\n" +
                    "      \"props\" : {\n" +
                    "        \"sex\" : \"男\",\n" +
                    "        \"position\" : \"Developer\"\n" +
                    "      }\n" +
                    "    }";
            Map map = js.toMap(json);

            List<Record> list = session.run(cql, map).list();
            System.out.println(list.size());
        }
    }


    @Test // set n={...}  一次创建多个节点
    public void TestUseProps7() {
        String cql = "UNWIND $props AS properties\n" +
                "CREATE (n:Person)\n" +
                "SET n = properties\n" +
                "RETURN n";
        try (Session session = GraphDb.newSession()) {

            String json="{\n" +
                    "  \"props\" : [ {\n" +
                    "    \"awesome\" : true,\n" +
                    "    \"name\" : \"Andy3\",\n" +
                    "    \"position\" : \"Developer\"\n" +
                    "  }, {\n" +
                    "    \"children\" : 3,\n" +
                    "    \"name\" : \"Michael\",\n" +
                    "    \"position\" : \"Developer\"\n" +
                    "  } ]\n" +
                    "}";
            Map map = js.toMap(json);

            List<Record> list = session.run(cql, map).list();
            System.out.println(list.size());
        }
    }

    /*
    2.6.3. Regular expression
    Parameters.
    {
      "regex" : ".*h.*"
    }
    Query.
    MATCH (n:Person)
    WHERE n.name =~ $regex
    RETURN n.name
     */
    @Test // 使用正则表达式
    public void TestUseProps8() {
        String cql = "MATCH (n:Person)\n" +
                "    WHERE n.name =~ $regex\n" +
                "    RETURN n.name";
        try (Session session = GraphDb.newSession()) {

            String json="{\n" +
                    "      \"regex\" : \".*h.*\"\n" +
                    "    }";
            Map map = js.toMap(json);

            List<Record> list = session.run(cql, map).list();
            System.out.println(list.size());
        }
    }
    /*
    2.6.4. Case-sensitive string pattern matching
    Parameters.
    {
      "name" : "Michael"
    }
    Query.
    MATCH (n:Person)
    WHERE n.name STARTS WITH $name
    RETURN n.name
     */
    @Test  
    public void TestUseProps9() {
        String cql = "MATCH (n:Person)\n" +
                "    WHERE n.name STARTS WITH $name\n" +
                "    RETURN n.name";
        try (Session session = GraphDb.newSession()) {

            String json="{\n" +
                    "      \"name\" : \"Michael\"\n" +
                    "    }";
            Map map = js.toMap(json);

            List<Record> list = session.run(cql, map).list();
            System.out.println(list.size());
        }
    }

  js.toMap 是将 json 转成Map的工具类

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值