Spring-Boot整合ArangoDB教程
Spring Boot整合ArangoDB教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取
一、环境准备
- JDK 17+
- Maven 3.8+
- Spring Boot 3.2+
- ArangoDB 3.11+(本地安装或Docker运行)
Docker启动ArangoDB
docker run -d –name arangodb
-p 8529:8529
-e ARANGO_ROOT_PASSWORD=rootpassword
arangodb:latest
二、创建Spring Boot项目
- 使用 创建项目
- 添加依赖:
- Spring Web
- Lombok
三、添加ArangoDB依赖
com.arangodb arangodb-spring-data 3.8.0
四、配置ArangoDB连接
application.yml
arangodb: host: 127.0.0.1 port: 8529 user: root password: rootpassword database: spring_db 创建配置类: @Configuration @EnableArangoRepositories(basePackages = “com.example.repository”) public class ArangoConfig { @Value("${arangodb.host}") private String host; @Value("${arangodb.port}") private int port; @Value("${arangodb.user}") private String user; @Value("${arangodb.password}") private String password; @Value("${arangodb.database}") private String database; @Bean public ArangoDB.Builder arangoBuilder() { return new ArangoDB.Builder() .host(host, port) .user(user) .password(password); } @Bean public ArangoDatabase arangoDatabase() { return arangoBuilder().build().db(database); } }
五、创建实体类
@Document(“users”) @Data @NoArgsConstructor @AllArgsConstructor public class User { @Id private String id; @ArangoId private String arangoId; private String name; private String email; private Integer age; }
六、创建Repository接口
public interface UserRepository extends ArangoRepository { // 自定义查询方法 @Query(“FOR u IN users FILTER u.age >= @0 RETURN u”) List findByAgeGreaterThanEqual(int age); }
七、实现Service层
@Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; public User createUser(User user) { return userRepository.save(user); } public List getAllUsers() { return (List) userRepository.findAll(); } public List getUsersByAge(int age) { return userRepository.findByAgeGreaterThanEqual(age); } }
八、创建REST控制器
@RestController @RequestMapping("/api/users") @RequiredArgsConstructor public class UserController { private final UserService userService; @PostMapping public ResponseEntity createUser(@RequestBody User user) { return ResponseEntity.ok(userService.createUser(user)); } @GetMapping public ResponseEntity> getAllUsers() { return ResponseEntity.ok(userService.getAllUsers()); } @GetMapping("/age/{age}") public ResponseEntity> getUsersByAge(@PathVariable int age) { return ResponseEntity.ok(userService.getUsersByAge(age)); } }
九、测试验证
- 启动Spring Boot应用
- 使用Postman测试:
- POST
/api/users
{ “name”: “John Doe”, “email”: “ ”, “age”: 28 } - GET
/api/users
查看所有用户 - GET
/api/users/age/25
查询年龄≥25的用户
十、高级查询示例
// 在Repository中添加 @Query(“FOR u IN users FILTER u.name == @name RETURN u”) List findByName(@Param(“name”) String name); // 复杂查询示例 @Query(“FOR u IN users FILTER u.age >= @minAge AND u.age <= @maxAge RETURN u”) List findByAgeRange(@Param(“minAge”) int minAge, @Param(“maxAge”) int maxAge);
十一、事务管理
@Autowired private ArangoDatabase arangoDatabase; public void transactionalOperation() { arangoDatabase.transaction( “users”, Collections.emptyMap(), trx -> { User user1 = new User(“Alice”, “ ”, 30); User user2 = new User(“Bob”, “ ”, 25); trx.collection(“users”).insertDocument(user1); trx.collection(“users”).insertDocument(user2); return null; }, Void.class ); }
十二、常见问题
- 连接失败:检查防火墙设置和ArangoDB日志
- 版本兼容性:确保ArangoDB服务端与Java驱动版本匹配
- AQL语法错误:使用ArangoDB Web界面(http://localhost:8529)调试查询