neo4j is a graph database, which requires a graph database to be used in the relationship graph.
W3c tutorial:https:///neo4j/
The Chinese version of the database can display images through image attributes, and the animation effect of the official website is achieved through;
pom import configuration
<dependency> <groupId></groupId> <artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-ogm-http-driver</artifactId> <version>3.1.4</version> </dependency>
Configure the database:
#neo4j .=neo4j .=123 .=http://192.168.100.106:7474 package ; import org.; import ; import ; import ; import ..EnableNeo4jRepositories; import ..Neo4jTransactionManager; import ; @Configuration @EnableNeo4jRepositories(basePackages = ".neo4j") @EnableTransactionManagement public class Neo4jConfig { @Value("${blotUri}") private String uri; @Value("${.}") private String databaseUrl; @Value("${.}") private String userName; @Value("${.}") private String password; @Bean public SessionFactory sessionFactory() { org. configuration = new org.() .uri(databaseUrl) .credentials(userName, password) .build(); return new SessionFactory(configuration, ".neo4j"); } @Bean public Neo4jTransactionManager transactionManager() { return new Neo4jTransactionManager(sessionFactory()); } }
Using neo4j:
neo4j is basically composed of two parts, nodes and relationships. The relationship is used to indicate the direction and associated attributes of the two nodes:
Node bean:
package .neo4j; import ; import ; import ; import ; import org..*; import ; import ; @Data @NodeEntity public class FaceNode { public FaceNode() { } public FaceNode(String name) { = name; } @Id @GeneratedValue private Long id; /** * objId */ private String objId; @JSONField(serialize = false) @JsonIgnore @Transient private String startName; @JSONField(serialize = false) @JsonIgnore @Transient private String endName; @Transient private Integer pathNum; @Transient private String intimacy; @Property(name = "scenes") private String scenes; @Property(name = "image") private String symbol; @Transient private Integer[] symbolSize = {60,60}; @JSONField(serialize = false) @Transient private MultipartFile faceImg; @JSONField(serialize = false) @Transient private String startTime; @JSONField(serialize = false) @Transient private String endTime; @Relationship(type = "relation") private List<FaceNodePro> faceNodePros = (); private List<FaceNode> children = (); public void addEndNode(FaceNode endNode, String title) { FaceNodePro pro = new FaceNodePro(title, this, endNode); (pro); } public void addStartNode(FaceNode startNode, String title) { FaceNodePro pro = new FaceNodePro(title, startNode, this); (pro); } public Long getId() { return id; } public void setId(Long id) { = id; } public String getObjId() { return objId; } public void setObjId(String objId) { = objId; } public String getSymbol() { return symbol; } public void setSymbol(String symbol) { = symbol; } public List<FaceNodePro> getFaceNodePros() { return faceNodePros; } public void setFaceNodePros(List<FaceNodePro> faceNodePros) { = faceNodePros; } public String getStartName() { return startName; } public void setStartName(String startName) { = startName; } public String getEndName() { return endName; } public void setEndName(String endName) { = endName; } public MultipartFile getFaceImg() { return faceImg; } public void setFaceImg(MultipartFile faceImg) { = faceImg; } public String getStartTime() { return startTime; } public void setStartTime(String startTime) { = startTime; } public String getEndTime() { return endTime; } public void setEndTime(String endTime) { = endTime; } public String getScenes() { return scenes; } public void setScenes(String scenes) { = scenes; } }
Relationship bean:
package .neo4j; import ; import org..*; @RelationshipEntity(type = "relation") public class FaceNodePro { public FaceNodePro() { } public FaceNodePro(String intimacy, FaceNode startNode, FaceNode endNode) { = intimacy; = startNode; = endNode; } @Id @GeneratedValue private Long nodeProId; /** * Intimacy */ @Property private String intimacy; @JsonBackReference @StartNode private FaceNode startNode; @EndNode private FaceNode endNode; public Long getNodeProId() { return nodeProId; } public void setNodeProId(Long nodeProId) { = nodeProId; } public String getIntimacy() { return intimacy; } public void setIntimacy(String intimacy) { = intimacy; } public FaceNode getStartNode() { return startNode; } public void setStartNode(FaceNode startNode) { = startNode; } public FaceNode getEndNode() { return endNode; } public void setEndNode(FaceNode endNode) { = endNode; } }
Repository implementation:
@Repository public interface FaceNodeRepository extends Neo4jRepository<FaceNode, Long> { FaceNode findByObjId(@Param("objId") String objId); /** * Query the graph of the specified level of node Node * * @param * @return */ @Query(value = "MATCH n=(:FaceNode{objId:{objId}})-[*..6]->() RETURN n") List<FaceNode> findByHierarchical(@Param("objId") String objId); }
The rest of the use is very simple.
I've collected some statements that I'll use:
Query nodeNodeAll relationships match(Node{name:'5c26219bd3e2dca5322110bb'})-[:PLAYED_IN]->(yf)return Node,yf Query nodeNodeof2Layer relationship diagram MATCH n=(:Node{name:"5c262177d3e2dca5322110b3"})-[*..1]-() return n 两个陌生人之间of所有最短认识路径 MATCH n = allshortestPaths((News:Friends circle{Name:"Xiao News"})-[*..6]-(Xiao Fei:Friends circle{Name:"Xiao Fei"})) return n Query nodeNode指向ofAll nodes MATCH (:Node { name: '5c262137d3e2dca5322110a7' })-->(movie)RETURN movie; Query tagsNodeAll nodes match(n)--(m:Node)return n; Bulk creationNode节点ofFriends circle MATCH (Node:Node {name:"4j2ap"})FOREACH (name in ["Johan","Rajesh","Anna","Julia","Andrew"] |CREATE (Node)-[:FRIEND]->(:Person {name:name})) Query the number of directed relationships between two nodes match (:FaceNode{name:"gong"})-[r:PLAYED_IN]->(:FaceNode{name:"eza2e"})return count(r)
refer to:
Reprinted from: /article/sinat_21184471/87092034
Copyright Statement: This article is an original article from the blogger, followCC 4.0 BY-SACopyright agreement, please attach the original source link and this statement to reprint.
Link to this article:/sinat_21184471/article/details/87092034
This is all about this article about springboot neo4j. For more related springboot neo4j content, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!