目录

Spring-Boot整合ArangoDB教程

Spring Boot整合ArangoDB教程

精心整理了最新的面试资料和简历模板,有需要的可以自行获取


一、环境准备

  1. JDK 17+
  2. Maven 3.8+
  3. Spring Boot 3.2+
  4. ArangoDB 3.11+(本地安装或Docker运行)

Docker启动ArangoDB

docker run -d –name arangodb
-p 8529:8529
-e ARANGO_ROOT_PASSWORD=rootpassword
arangodb:latest

二、创建Spring Boot项目

  1. 使用 创建项目
  2. 添加依赖:
  • 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)); } }

九、测试验证

  1. 启动Spring Boot应用
  2. 使用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 ); }

十二、常见问题

  1. 连接失败:检查防火墙设置和ArangoDB日志
  2. 版本兼容性:确保ArangoDB服务端与Java驱动版本匹配
  3. AQL语法错误:使用ArangoDB Web界面(http://localhost:8529)调试查询