简介
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
安装
下载后解压目录:
配置环境:
cmd启动neo4j: neo4j.bat console
注意:如果jdk环境是1.8,请下载3.x的neo4j
Springboot整合Neo4j:
- 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>`在这里插入代码片`
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 配置文件:
spring.data.neo4j.uri=http://localhost:7474
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=123456
- 主启动类
@SpringBootApplication
@EnableNeo4jRepositories(basePackages ="com.yang.springboot.dao")
@EntityScan(basePackages = "com.yang.springboot.pojo")
public class Springboot05Neo4jApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot05Neo4jApplication.class, args);
}
}
- 创建节点类:
@NodeEntity(label = "User") //表示节点类型 存入neo4j数据库中
public class UserNode {
@Id
@GeneratedValue
private Long nodeId;
@Property
private String userId;
@Property
private String name;
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;
}
}
- 创建dao层仓库类
@Component
public interface UserRepository extends Neo4jRepository<UserNode,Long> {
/**
* 获取用户节点集合
* @return
*/
@Query("MATCH (n:User) RETURN n ")
List<UserNode> getUserNodeList();
/**
* 通过名字添加用户节点
* @param name
* @return
*/
@Query("create (n:User{name:{name}}) RETURN n")
List<UserNode> addUserNodeList(@Param("name") String name);
}
- service层
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
//添加用户节点
public void addUserNode(UserNode userNode){
userRepository.addUserNodeList(userNode.getName());
}
//保存节点
public void saveNode(UserNode userNode){
userRepository.save(userNode);
}
}
- controller层:
@Controller
public class Neo4jController {
@Autowired
private UserService userService;
@RequestMapping("/saveUser")
@ResponseBody
public String saveUser(){
UserNode userNode=new UserNode();
//userNode.setNodeId(1l);
userNode.setUserId("123456");
userNode.setName("杨立虎");
//userService.addUserNode(userNode);
userService.saveNode(userNode);
return "success";
}
}
最后可以在网页中输入Cypher查询语句获得图形化关系图