精华
Neo4j使用 java api 嵌入式开发模式 创建用户自定义函数
用户自定义函数可以用于在cypher语句中调用
第一步:创建Java Maven项目
pom.xml 如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.pangguoming.neo4j</groupId>
<artifactId>Neo4j-procedure-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 指明打包为jar文件 -->
<packaging>jar</packaging>
<name>Neo4j Procedure Template</name>
<description>pangguoming created</description>
<dependencies>
<!-- neo4j的依赖包-->
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>3.4.0</version>
<scope>provided</scope> <!-- 注意! :必须 指明不需要把此依赖中的jar打包进去 -->
</dependency>
</dependencies>
<!-- 指明将本项目打包,并配置打包 -->
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<!-- Neo4j 过程需要 Java 8 -->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<!-- 生成jar文件-->
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
第二步: 创建Java类
使用org.neo4j.procedure.UserFunction对我们要创建的用户自定义函数的java方法进行注释
package com.pangguoming.neo4j;
import java.util.List;
import org.neo4j.procedure.Description;
import org.neo4j.procedure.Name;
import org.neo4j.procedure.UserFunction;
/**
* 将字符串数组 用 指定的字符串联起来,形成一个字符串
* 用法1
* RETURN com.pangguoming.neo4j.join(['A','quick','brown','fox'],'-') as sentence
*
* 用法2
* match (n:Person)
*with collect(n.name) as namearry
*return com.pangguoming.neo4j.join(namearry,'-') as sentence
*/
public class Join
{
@UserFunction
@Description("com.pangguoming.neo4j.join(['s1','s2',...], delimiter) - 庞国明创建 普通用户自定义函数.")
public String join(
@Name("strings") List<String> strings,
@Name(value = "delimiter", defaultValue = ",") String delimiter) {
if (strings == null || delimiter == null) {
return null;
}
return String.join(delimiter, strings);
}
}
第三步,将java项目 使用Maven命令打包成jar文件
使用Maven命令: mvn clean package 在java项目的target文件夹下将生成jar文件,将此jar文件复制进Neo4j安装目录的plugin文件夹内,重启数据库
第四步,OK我们应该可以使用cypher调用此函数了
使用cypher命令 CALL dbms.functions() 查看到我们创建的 用户自定义函数:com.pangguoming.neo4j.join()
在cypher中的用法如下
用法1
RETURN com.pangguoming.neo4j.join(['A','quick','brown','fox'],'-') as sentence
用法2
match (n:Person)
with collect(n.name) as namearry
return com.pangguoming.neo4j.join(namearry,'-') as sentence