# my-work-study **Repository Path**: byp666/my-work-study ## Basic Information - **Project Name**: my-work-study - **Description**: AI编写代码学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-30 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Neo4j API - Spring Boot 项目 基于 Spring Boot 3.x + Neo4j + JDK 17 的图数据库 REST API 服务。 ## 项目特性 - ✅ Spring Boot 3.2.0 - ✅ Java 17 - ✅ Neo4j 图数据库集成 - ✅ RESTful API 接口 - ✅ 分页查询支持 - ✅ 多种查询方式(按标签、名称、属性等) - ✅ 健康检查接口 - ✅ 全局异常处理 - ✅ Lombok 减少样板代码 ## 技术栈 - **后端框架**: Spring Boot 3.2.0 - **Java版本**: JDK 17 - **数据库**: Neo4j 5.15.0 - **构建工具**: Maven - **API文档**: OpenAPI (Swagger) ## 快速开始 ### 前置条件 1. Java 17 或更高版本 2. Maven 3.6 或更高版本 3. Neo4j 数据库(可使用 Docker 运行) ### 启动 Neo4j 数据库 使用 Docker 启动 Neo4j: ```bash docker run -d \ --name my-neo4j \ -p 7474:7474 -p 7687:7687 \ -v /home/neo4j/data:/data \ -v /home/neo4j/logs:/logs \ -v /home/neo4j/conf:/var/lib/neo4j/conf \ -v /home/neo4j/import:/var/lib/neo4j/import \ -v /home/neo4j/plugins:/var/lib/neo4j/plugins \ -e NEO4J_AUTH=neo4j/123456 \ neo4j:latest ``` ### 配置应用 编辑 `src/main/resources/application.yml` 文件,配置 Neo4j 连接信息: ```yaml spring: neo4j: uri: bolt://localhost:7687 authentication: username: neo4j password: 123456 database: neo4j ``` ### 构建和运行 ```bash # 编译项目 mvn clean compile # 运行测试 mvn test # 打包应用 mvn package # 运行应用 mvn spring-boot:run # 或者直接运行jar包 java -jar target/neo4j-api-1.0.0.jar ``` 应用启动后,访问:http://localhost:8080/api ## API 接口文档 ### 健康检查 - `GET /api/health` - 应用健康状态 - `GET /api/health/info` - 应用信息 ### 节点管理 - `POST /api/nodes` - 创建节点 - `GET /api/nodes/{id}` - 根据ID获取节点 - `PUT /api/nodes/{id}` - 更新节点 - `DELETE /api/nodes/{id}` - 删除节点 - `GET /api/nodes` - 获取所有节点 - `GET /api/nodes/count` - 获取节点总数 ### 查询接口 - `GET /api/nodes/search/labels` - 按标签查询(分页) - `GET /api/nodes/search/name` - 按名称查询(分页) - `GET /api/nodes/search/property` - 按属性查询 - `GET /api/nodes/search/labels/containing` - 按标签包含查询 ## 请求示例 ### 创建节点 ```bash curl -X POST http://localhost:8080/api/nodes \ -H "Content-Type: application/json" \ -d '{ "labels": "Person,User", "name": "张三", "description": "这是一个用户节点", "properties": { "age": 30, "email": "zhangsan@example.com", "city": "北京" } }' ``` ### 查询节点 ```bash # 按ID查询 curl http://localhost:8080/api/nodes/{node-id} # 按标签查询(分页) curl "http://localhost:8080/api/nodes/search/labels?labels=Person&page=0&size=10" # 按名称查询 curl "http://localhost:8080/api/nodes/search/name?name=张三&page=0&size=10" # 按属性查询 curl "http://localhost:8080/api/nodes/search/property?key=city&value=北京" ``` ## 项目结构 ``` src/main/java/com/example/neo4japi/ ├── Neo4jApiApplication.java # 应用启动类 ├── config/ # 配置类 ├── entity/ # 实体类 │ ├── GraphNode.java # 节点实体 │ └── GraphRelationship.java # 关系实体 ├── repository/ # 数据访问层 │ └── GraphNodeRepository.java # 节点仓库 ├── service/ # 业务逻辑层 │ └── GraphNodeService.java # 节点服务 └── controller/ # 控制层 ├── GraphNodeController.java # 节点控制器 ├── HealthController.java # 健康检查 └── GlobalExceptionHandler.java # 异常处理 ``` ## 开发指南 ### 添加新的实体 1. 在 `entity` 包中创建新的实体类 2. 使用 `@Node` 注解标记节点实体 3. 在 `repository` 包中创建对应的 Repository 接口 4. 在 `service` 包中实现业务逻辑 5. 在 `controller` 包中创建 REST 接口 ### 自定义查询 使用 `@Query` 注解定义自定义 Cypher 查询: ```java @Query("MATCH (n:GraphNode) WHERE n.name CONTAINS $name RETURN n ORDER BY n.createdAt DESC") List findByNameCustom(@Param("name") String name); ``` ### 事务管理 在 Service 层使用 `@Transactional` 注解管理事务: ```java @Transactional public GraphNode createNode(String labels, String name, Map properties) { // 业务逻辑 } ``` ## 部署 ### Docker 部署 创建 Dockerfile: ```dockerfile FROM openjdk:17-jdk-slim VOLUME /tmp COPY target/neo4j-api-1.0.0.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 构建和运行: ```bash docker build -t neo4j-api . docker run -p 8080:8080 neo4j-api ``` ### 生产环境配置 创建 `application-prod.yml`: ```yaml spring: neo4j: uri: ${NEO4J_URI:bolt://localhost:7687} authentication: username: ${NEO4J_USERNAME:neo4j} password: ${NEO4J_PASSWORD:123456} logging: level: com.example.neo4japi: INFO org.springframework.data.neo4j: WARN ``` ## 故障排除 ### 常见问题 1. **Neo4j 连接失败** - 检查 Neo4j 服务是否运行 - 验证连接配置是否正确 - 检查防火墙设置 2. **端口冲突** - 修改 `server.port` 配置 - 检查是否有其他应用占用端口 3. **内存不足** - 增加 JVM 堆内存:`-Xmx2g` - 优化查询性能 ### 日志查看 应用日志位于控制台输出,可通过日志级别配置调整详细程度。 ## 贡献指南 1. Fork 项目 2. 创建功能分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 许可证 MIT License