当前位置: 首页 > 科技观察

Java操作Neo4J就是这么简单!

时间:2023-03-14 00:34:46 科技观察

本文转载自微信公众号《Java极客技术》,作者鸭血范唐。转载本文请联系Java极客技术公众号。前几天阿芬为大家扩充了Neo4J图数据库的内容。今天阿粉就教大家如何使用Java操作Neo4j数据库。使用Java操作Neo4J首先,我们先使用native方法导入jar包,然后:basic("neo4j","Yinlidong1995."));Sessionsession=driver.session();session.run("CREATE(n:Part{name:{name},title:{title}})",parameters("name","Arthur001","title","King001"));StatementResultresult=session.run("MATCH(a:Part)WHEREa.name={name}"+"RETURNa.nameASname,a.titleAStitle",parameters("名字","Arthur001"));while(result.hasNext()){Recordrecord=result.next();System.out.println(record.get("title").asString()+""+record.get("name").asString());}session.close();driver.close();}}这个是比较老的实现方式了,还是需要一些CQL语句来实现。但是胜利很容易理解。这个时候我们需要再看一下图片,看看它在Neo4J中是如何显示的。通过这个,我们至少证明我们连接成功,创建成功。这时候细心的读者就会问了,为什么我之前在GraphDatabase.driver的地方连接的是bolt://localhost:7687呢?这是因为你启动的Neo4J是7474的,也就是说,在Neo4J服务中这是不连接的,SpringBoot集成了Neo4j1。创建一个SpringBoot项目创建一个SpringBoot项目是例行公事。创建完成后,习惯上更改SpringBoot的版本号。最好不要用最新版,因为阿芬亲身体验过,用最新版是的,连错都不知道。这是一个如此神奇的错误,您将永远找不到它。我们将版本号更改为2.1.0。在这种情况下,我们在pom文件中添加依赖jar>org.projectlomboklombok1.16.102.添加配置spring:data:neo4j:url:bolt://localhost:7687username:neo4jpassword:Yinlidong1995.main:allow-bean-definition-overriding:true3.Neo4JConfigpackagecom.example.neo4j.config;importorg.neo4j.driver.v1。AuthTokens;importorg.neo4j.driver.v1.Driver;importorg.neo4j.driver.v1.GraphDatabase;importorg.neo4j.driver.v1.Session;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context。annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;importorg.springframework.transaction.annotation.EnableTransactionManagement;@Configuration@EnableNeo4jRepositories("com.example.neo4j.repository")@EnableTransactionManagementpublicclassNeo4jConfig{@Value("${spring.data.neo4j.url}")privateStringurl;@Value("${spring.data.neo4j.username}")privateStringuserName;@Value("${spring.data.neo4j.password}")privateStringpassword;@Bean(name="session")publicSessionneo4jSession(){Driverdriver=GraphDatabase.driver(url,AuthTokens.basic(userName,password));returndriver.session();}}4.编写实体类packagecom.example.neo4j.entry;importorg.neo4j.ogm.annotation.*;importjava.util.HashSet;importjava.util。Set;@NodeEntity("group")@DatapublicclassGroupNode{@Id@GeneratedValueprivateLongid;/***班级名称*/@Property(name="name")privateStringname;/***编号*/privateStringnum;@Relationship(type="RelationEdge")privateSetsets=newHashSet<>();publicvoidaddRelation(StudentNodesonNode,Stringname){RelationEdgerelationNode=newRelationEdge(this,sonNode,name);sets.add(relationNode);sonNode.getSets().add(relationNode);}}学生实体类:packagecom.example.neo4j.entry;importorg。neo4j.ogm.annotation.GeneratedValue;importorg.neo4j.ogm.annotation.Id;importorg.neo4j.ogm.annotation.NodeEntity;importorg.neo4j.ogm.annotation.Relationship;importjava.util.HashSet;importjava.util.Set;/***有点类似于Mysql中表映射的对象类。在mysql中称为ORM,在neo4j中称为OGM[objectgraphmapping]*/@NodeEntity("student")@DatapublicclassStudentNode{@Id@GeneratedValueprivateLongid;/***StudentName*/privateStringname;/***gender*/privateStringsex;@关系(type="RelationEdge",direction="INCOMING")privateSetsets=newHashSet<>();}packagecom.example.neo4j.entry;importlombok.Data;importorg.neo4j.ogm.annotation.*;@RelationshipEntity(type="RelationEdge")@DatapublicclassRelationEdge{@Id@GeneratedValueprivateLongid;//关系名称privateStringname;@StartNodeprivateGroupNodegroupNode;@EndNodeprivateStudentNodestudentNode;publicRelationEdge(GroupNodeparentNode,StudentNodesonNode,Stringname){this.groupNode=parentNode;this.studentNode=sonNode;this.name=name;}}5.Repository接口对应的学生接口:packagecom.example.neo4j.repository;importcom.example.neo4j.entry.StudentNode;importorg.springframework.data.neo4j.repository.Neo4jRepository;publicinterfaceStudentRepositoryextendsNeo4jRepository{}对应的班级接口packagecom.example.neo4j.repository;importneo4jample.example...neo4j.repository.GroupRepository;importcom.example.neo4j.repository.StudentRepository;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;导入org.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/node")@Slf4jpublicclassGroupController{@AutowiredprivateStudentRepositorystudentRepository;@AutowiredprivateGroupRepositorygroupRepository;@GetMapping(value="/create")publicvoidcreateNodeRelation(){StudentNodestudentNode1=newStudentNode();studentNode1.setName("Alen");studentNode1.setSex("男");StudentNodestudentNode2=newStudentNode2();学生节点.setName("Kai");studentNode2.setSex("女");studentRepository.save(studentNode1);studentRepository.save(studentNode2);GroupNodegroupNode=newGroupNode();groupNode.setName("火箭班");groupNode.setNum("298");//增加关联groupNode.addRelation(studentNode1,"includes");groupNode.addRelation(studentNode2,"includes");groupRepository.save(groupNode);}}启动后,访问http://localhost:8080/node/create,我们去图数据库看看怎么样。使用Java操作是不是很简单?这样的图数据库你会选择吗?