第一步,创建Springboot工程
使用Eclipse 创建Maven项目,并修改pom.xml文件为:

<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>

<artifactId>demo</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging> <name>demo</name>

<description>Demo project for Spring Boot</description> <parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.9.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent> <properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties> <dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>
  </span><span class="tag">&lt;dependency&gt;</span><span class="pln">
</span><span class="tag">&lt;groupId&gt;</span><span class="pln">org.springframework.boot</span><span class="tag">&lt;/groupId&gt;</span><span class="pln">
</span><span class="tag">&lt;artifactId&gt;</span><span class="pln">spring-boot-starter-test</span><span class="tag">&lt;/artifactId&gt;</span><span class="pln">
</span><span class="tag">&lt;scope&gt;</span><span class="pln">test</span><span class="tag">&lt;/scope&gt;</span><span class="pln">
</span><span class="tag">&lt;/dependency&gt;</span><span class="pln"> </span><span class="tag">&lt;dependency&gt;</span><span class="pln">
</span><span class="tag">&lt;groupId&gt;</span><span class="pln">org.springframework.boot</span><span class="tag">&lt;/groupId&gt;</span><span class="pln">
</span><span class="tag">&lt;artifactId&gt;</span><span class="pln">spring-boot-starter-data-neo4j</span><span class="tag">&lt;/artifactId&gt;</span><span class="pln">
</span><span class="tag">&lt;/dependency&gt;</span><span class="pln">

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

第二步,修改配置文件application.properties


server.port=8080
spring.data.neo4j.uri=http://{neo4jweb端访问地址}:7474
spring.data.neo4j.username=neo4j账号
spring.data.neo4j.password=neo4j密码

第三步,model文件—节点User和关系UserRelation,这两个文件与neo4j里面的节点和关系的属性一一对应,此处是我的示例,具体与各自的neo4j内容对于,label必须与neo4j库里名字一致

@NodeEntity(label = "User")
public class UserNode {
@GraphId
private Long nodeId; @Property(name = "userId")
private String userId; @Property(name = "name")
private String name; @Property(name = "age")
private int age; public Long getNodeId() {
return nodeId;
} public void setNodeId(Long nodeId) {
this.nodeId = nodeId;
} public String getUserId() {
return userId;
} public void setUserId(String userId) {
this.userId = userId;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
@RelationshipEntity(type = "UserRelation")

public class UserRelation {

@GraphId

private Long id;
</span><span class="lit">@StartNode</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">UserNode</span><span class="pln"> startNode</span><span class="pun">;</span><span class="pln"> </span><span class="lit">@EndNode</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">UserNode</span><span class="pln"> endNode</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">Long</span><span class="pln"> getId</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> id</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> setId</span><span class="pun">(</span><span class="typ">Long</span><span class="pln"> id</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">id </span><span class="pun">=</span><span class="pln"> id</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">UserNode</span><span class="pln"> getStartNode</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> startNode</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> setStartNode</span><span class="pun">(</span><span class="typ">UserNode</span><span class="pln"> startNode</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">startNode </span><span class="pun">=</span><span class="pln"> startNode</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">UserNode</span><span class="pln"> getEndNode</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> endNode</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> setEndNode</span><span class="pun">(</span><span class="typ">UserNode</span><span class="pln"> endNode</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">endNode </span><span class="pun">=</span><span class="pln"> endNode</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

}

第四步,repository文件----UserRepository和UserRelationRepository,@Query里面编写Cypher查询


@Component
public interface UserRepository extends GraphRepository<UserNode> { [@Query](/user/Query)("MATCH (n:User) RETURN n ")
List<UserNode> getUserNodeList(); [@Query](/user/Query)("create (n:User{age:{age},name:{name}}) RETURN n ")
List<UserNode> addUserNodeList(@Param("name") String name, @Param("age")int age);
} @Component
public interface UserRelationRepository extends GraphRepository<UserRelation> { [@Query](/user/Query)("match p=(n:User)<-[r:UserRelation]->(n1:User) where n.userId={firstUserId} and n1.userId={secondUserId} return p")
List<UserRelation> findUserRelationByEachId(@Param("firstUserId") String firstUserId, @Param("secondUserId") String secondUserId); [@Query](/user/Query)("match (fu:User),(su:User) where fu.userId={firstUserId} and su.userId={secondUserId} create p=(fu)-[r:UserRelation]->(su) return p")
List<UserRelation> addUserRelation(@Param("firstUserId") String firstUserId, @Param("secondUserId") String secondUserId); }

第五步,修改service文件

@Service
public class Neo4jService { @Autowired
private UserRepository userRepository;
@Autowired
private UserRelationRepository userRelationRepository; /**
* Always use constructor based dependency injection in your beans.
* Always use assertions for mandatory dependencies.
*/ public int addUser(UserNode userNode){
userRepository.addUserNodeList(userNode.getName(),userNode.getAge());
return 1;
}
}

第六步,neo4j文件注入config----Neo4jConfig,注意basePackges的路径。

@Configuration
@EnableNeo4jRepositories(basePackages = "com.example.demo.repository")
public class Neo4jConfig {
}

原文地址:http://neo4j.com.cn/topic/5a935b4a2aa9336e06418eca

Spring boot项目集成Neo4j的更多相关文章

  1. [转帖]spring boot项目集成jacoco

    小试牛刀:spring boot项目集成jacoco 2019-03-28 20:14:36 zyq23333 阅读数 509   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议, ...

  2. Spring Boot 项目集成 Alibaba Druid

    Druid 是一个非常好用的数据库连接池,但是他的好并不止体现在作为一个连接池加快数据访问性能上和连接管理上,他带有一个强大的监控工具:Druid Monitor.不仅可以监控数据源和慢查询,还可以监 ...

  3. 【Spring Boot&&Spring Cloud系列】Spring Boot项目集成Swagger UI

    前言 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集 ...

  4. Spring boot项目集成Sharding Jdbc

    环境 jdk:1.8 framework: spring boot, sharding jdbc database: MySQL 搭建步骤 在pom 中加入sharding 依赖 <depend ...

  5. Spring Boot 项目集成Redis

    目录 集成方式 使用Jedis 使用spring-data-redis Redis的安装 绑定配置 获取Redis客户端 Redis工具的编写 使用 集成方式 使用Jedis Jedis是Redis官 ...

  6. spring boot项目集成zuul网关

    1 zuul简介 Zuul 的官方介绍是 “Zuul is the front door for all requests from devices and web sites to the back ...

  7. Spring Boot项目集成flyway

    一.为什么要使用flyway Flyway的定位:数据库的版本控制.   用一种简单.干净的方案,帮助用户完成数据库迁移的工作.使用Flyway,用户可以从任意一个数据库版本迁移到最新版本,简单而且有 ...

  8. Spring Boot 项目实战(五)集成 Dubbo

    一.前言 上篇介绍了 Redis 的集成过程,可用于解决热点数据访问的性能问题.随着业务复杂度的提高,单体应用越来越庞大,就好比一个类的代码行数越来越多,分而治之,切成多个类应该是更好的解决方法,所以 ...

  9. Spring Boot 项目实战(四)集成 Redis

    一.前言 上篇介绍了接口文档工具 Swagger 及项目监控工具 JavaMelody 的集成过程,使项目更加健壮.在 JAVA Web 项目某些场景中,我们需要用缓存解决如热点数据访问的性能问题,业 ...

随机推荐

  1. vs中free内存失败

    关于vs中free内存失败: 主要有以下两个原因: 1. 函数参数调用写错.特别是传指针进去的时候,若形参与实参不对应,会出错. 2. 内存分配不够,这个原因主要是因为程序中访问到了内存外的地址,即使 ...

  2. web项目重启命令

    jps -lvm|grep "young_rd_10004" | awk '{print $1}'|xargs kill -9; sleep 3; /home/web_server ...

  3. sh_05_非公勿入

    sh_05_非公勿入 # 练习3: 定义一个布尔型变量 is_employee,编写代码判断是否是本公司员工 is_employee = False # 如果不是提示不允许入内 # 在开发中,通常希望 ...

  4. 关于导入web项目之后项目名上有红叉,但是能够正常运行,代码不会报错的问题

    解决方式之一: 1.进入项目包下的.settings目录 2.找到org.eclipse.wst.common.project.facet.core.xml文件,用记事本打开 3.将<runti ...

  5. (48)LINUX应用编程和网络编程之三Linux获取系统信息

    3.3.1.关于时间的概念 3.3.1.1.GMT时间 (1)GMT是格林尼治时间,也就是格林尼治地区的当地之间. (2)GMT时间的意义?[用格林尼治的当地时间作为全球国际时间],用以描述全球性的事 ...

  6. 线下作业MySQL #20175201

    1.下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql,提交导入成功截图 2.编 ...

  7. 使用HeapAnalyzer分析内存泄漏

    从IBM网站下载ha433包,释放,执行ha433.jar文件 https://www.ibm.com/developerworks/mydeveloperworks/groups/service/h ...

  8. leetcode-easy-array-122 best time to buy and sell stocks II

    mycode  69.45% class Solution(object): def maxProfit(self, prices): """ :type prices: ...

  9. Word2Vec模型参数 详解

    用gensim函数库训练Word2Vec模型有很多配置参数.这里对gensim文档的Word2Vec函数的参数说明进行翻译,以便不时之需. class gensim.models.word2vec.W ...

  10. (转)深入理解Java:注解(Annotation)自定义注解入门

    向作者致敬! 转自:http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在 ...