【spring-boot-starter-data-neo4j】创建结点和查找结点操作
配置连接neo4j
# application.properties
spring.neo4j.uri=bolt://localhost:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=你的密码
定义实体类
package com.anmory.platform.GraphService.Dao;
import org.springframework.data.neo4j.core.schema.GeneratedValue;
import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;
import org.springframework.data.neo4j.core.schema.Property;
@Node(labels = "药材名称")
public class Herb {
@Id
@GeneratedValue
private Long id;
@Property("name")
private String name;
public Herb() {}
public Herb(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
定义仓库类
package com.anmory.platform.GraphService.Repository;
import com.anmory.platform.GraphService.Dao.Herb;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.neo4j.repository.query.Query;
import org.springframework.stereotype.Repository;
/**
* @author Anmory/李梦杰
* @description TODO
* @date 2025-03-15 下午12:58
*/
@Repository
public interface HerbRepo extends Neo4jRepository<Herb, Long> {
// 使用自定义查询
@Query("MATCH (herb:药材名称 {name: $name}) RETURN herb")
Herb findByName(String name);
}
定义服务类
package com.anmory.platform.GraphService.Service;
import com.anmory.platform.GraphService.Dao.Herb;
import com.anmory.platform.GraphService.Repository.HerbRepo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class HerbService {
private static final Logger logger = LoggerFactory.getLogger(HerbService.class);
@Autowired
private HerbRepo herbRepo;
public Herb createHerb(String name) {
logger.info("Creating herb with name: {}", name);
Herb herb = new Herb(name);
return herbRepo.save(herb);
}
public Herb findHerbByName(String name) {
logger.info("Finding herb by name: {}", name);
return herbRepo.findByName(name); // 返回 null 如果未找到
}
}
定义视图类
package com.anmory.platform.GraphService.Controller;
import com.anmory.platform.GraphService.Dao.Herb;
import com.anmory.platform.GraphService.Service.HerbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
public class HerbController {
@Autowired
private HerbService herbService;
@PostMapping("/createherb")
public Herb createHerb(@RequestParam String name) {
System.out.println("name = " + name);
return herbService.createHerb(name);
}
@GetMapping("/findherb")
public Herb getHerbByName(@RequestParam String name) {
System.out.println("name = " + name);
return herbService.findHerbByName(name);
}
}
测试创建和查找
在postman中输入以下url来创建和测试
http://localhost:8080/createherb?name=我的药材1
http://localhost:8080/findherb?name=我的药材1