springboot集成neo4j
點擊上方藍色字體,選擇“標星公眾號”
優(yōu)質文章,第一時間送達
1.NEO4J簡介
2.傳統(tǒng)關系型數(shù)據(jù)庫與圖形數(shù)據(jù)庫的糾葛
3.怎么把neo4j怎么集成到我們的程序中?
4.集成步驟截圖:
"1.0"?encoding="UTF-8"?>"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?https://maven.apache.org/xsd/maven-4.0.0.xsd">
????4.0.0
????
????????org.springframework.boot
????????spring-boot-starter-parent
????????2.3.2.RELEASE
?????????
????
????com.example
????neo4j
????0.0.1-SNAPSHOT
????neo4j
????Demo?project?for?Spring?neo4j
?
????
????????1.8
????
?
????
????????
????????????org.springframework.boot
????????????spring-boot-starter-data-neo4j
????????
?
????????
????????????org.springframework.boot
????????????spring-boot-starter-test
????????????test
????????????
????????????????
????????????????????org.junit.vintage
????????????????????junit-vintage-engine
????????????????
????????????
????????
????
?
????
????????
????????????
????????????????org.springframework.boot
????????????????spring-boot-maven-plugin
????????????
????????
????
?
spring.data.neo4j.uri=bolt://localhost:7687
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=neo4j
package?com.example.neo4j.entity;
?
import?java.util.Collections;
import?java.util.HashSet;
import?java.util.Optional;
import?java.util.Set;
import?java.util.stream.Collectors;
?
import?org.neo4j.ogm.annotation.GeneratedValue;
import?org.neo4j.ogm.annotation.Id;
import?org.neo4j.ogm.annotation.NodeEntity;
import?org.neo4j.ogm.annotation.Relationship;
?
@NodeEntity
public?class?Person?{
?
????@Id?@GeneratedValue?private?Long?id;
?
????private?String?name;
?
????private?Person()?{
????????//?Empty?constructor?required?as?of?Neo4j?API?2.0.5
????};
?
????public?Person(String?name)?{
????????this.name?=?name;
????}
?
????/**
?????*?Neo4j?doesn't?REALLY?have?bi-directional?relationships.?It?just?means?when?querying
?????*?to?ignore?the?direction?of?the?relationship.
?????*?https://dzone.com/articles/modelling-data-neo4j
?????*/
????@Relationship(type?=?"TEAMMATE",?direction?=?Relationship.UNDIRECTED)
????public?Set?teammates; s?teammates?=>?"
?
????public?void?worksWith(Person?person)?{
????????if?(teammates?==?null)?{
????????????teammates?=?new?HashSet<>();
????????}
????????teammates.add(person);
????}
?
????public?String?toString()?{
?
????????return?this.name?+?"'
????????????????+?Optional.ofNullable(this.teammates).orElse(
????????????????Collections.emptySet()).stream()
????????????????.map(Person::getName)
????????????????.collect(Collectors.toList());
????}
?
????public?String?getName()?{
????????return?name;
????}
?
????public?void?setName(String?name)?{
????????this.name?=?name;
????}
}
package?com.example.neo4j.repository;
?
import?java.util.List;
?
import?com.example.neo4j.entity.Person;
import?org.springframework.data.domain.Page;
import?org.springframework.data.domain.Pageable;
import?org.springframework.data.neo4j.annotation.Query;
import?org.springframework.data.neo4j.repository.Neo4jRepository;
?
public?interface?PersonRepository?extends?Neo4jRepository?{
?
????Person?findByName(String?name);
?
????List?findByTeammatesName(String?name);
?
????@Query(value?=?"match?(Greg:Person)?return?Greg",
????????????countQuery=?"match?(Greg:Person)?return?count(Greg)")
????Page?getActorsThatActInAmoviesFromTitle(?Pageable?pageable?);
?
????@Query(value?="",countQuery?=?"")
????List?getAllById();
}
package?com.example.neo4j;
?
import?com.example.neo4j.entity.Person;
import?com.example.neo4j.repository.PersonRepository;
import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;
import?org.springframework.boot.CommandLineRunner;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?org.springframework.context.annotation.Bean;
import?org.springframework.data.domain.Page;
import?org.springframework.data.domain.PageRequest;
import?org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;
?
import?java.util.Arrays;
import?java.util.List;
?
?
@SpringBootApplication
@EnableNeo4jRepositories
public?class?Neo4jApplication?{
?
????private?final?static?Logger?log?=?LoggerFactory.getLogger(Neo4jApplication.class);
?
?
????public?static?void?main(String[]?args)?{
????????SpringApplication.run(Neo4jApplication.class,?args);
????????System.exit(0);
????}
?
????@Bean
????CommandLineRunner?demo(PersonRepository?personRepository)?{
????????return?args?->?{
?
????????????personRepository.deleteAll();
?
????????????Person?greg?=?new?Person("Greg");
????????????Person?roy?=?new?Person("Roy");
????????????Person?craig?=?new?Person("Craig");
?
????????????List?team?=?Arrays.asList(greg,?roy,?craig);
?
????????????log.info("Before?linking?up?with?Neo4j...");
?
????????????team.stream().forEach(person?->?log.info("\t"?+?person.toString()));
?
????????????personRepository.save(greg);
????????????personRepository.save(roy);
????????????personRepository.save(craig);
?
????????????greg?=?personRepository.findByName(greg.getName());
????????????greg.worksWith(roy);
????????????greg.worksWith(craig);
????????????personRepository.save(greg);
?
????????????roy?=?personRepository.findByName(roy.getName());
????????????roy.worksWith(craig);
????????????//?We?already?know?that?roy?works?with?greg
????????????personRepository.save(roy);
?
????????????//?We?already?know?craig?works?with?roy?and?greg
?
????????????log.info("Lookup?each?person?by?name...");
????????????team.stream().forEach(person?->?log.info(
????????????????????"\t"?+?personRepository.findByName(person.getName()).toString()));
?
????????????List?teammates?=?personRepository.findByTeammatesName(greg.getName());
????????????log.info("The?following?have?Greg?as?a?teammate...");
????????????teammates.stream().forEach(person?->?log.info("\t"?+?person.getName()));
????????????Page?grag=personRepository.getActorsThatActInAmoviesFromTitle(PageRequest.of(0,5));
????????????log.info("\t"?+?grag);
????????};
????}
?
}
版權聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:
https://blog.csdn.net/a__da/article/details/112484242
粉絲福利:Java從入門到入土學習路線圖
??????

??長按上方微信二維碼?2 秒
感謝點贊支持下哈?
評論
圖片
表情











