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. 使用start.spring.io创建项目
  2. 添加依赖:
    • Spring Web
    • Lombok

三、添加ArangoDB依赖

<!-- pom.xml -->
<dependency>
    <groupId>com.arangodb</groupId>
    <artifactId>arangodb-spring-data</artifactId>
    <version>3.8.0</version>
</dependency>

四、配置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<User, String> {
    
    // 自定义查询方法
    @Query("FOR u IN users FILTER u.age >= @0 RETURN u")
    List<User> findByAgeGreaterThanEqual(int age);
}

七、实现Service层

@Service
@RequiredArgsConstructor
public class UserService {

    private final UserRepository userRepository;

    public User createUser(User user) {
        return userRepository.save(user);
    }

    public List<User> getAllUsers() {
        return (List<User>) userRepository.findAll();
    }

    public List<User> getUsersByAge(int age) {
        return userRepository.findByAgeGreaterThanEqual(age);
    }
}

八、创建REST控制器

@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        return ResponseEntity.ok(userService.createUser(user));
    }

    @GetMapping
    public ResponseEntity<List<User>> getAllUsers() {
        return ResponseEntity.ok(userService.getAllUsers());
    }

    @GetMapping("/age/{age}")
    public ResponseEntity<List<User>> getUsersByAge(@PathVariable int age) {
        return ResponseEntity.ok(userService.getUsersByAge(age));
    }
}

九、测试验证

  1. 启动Spring Boot应用
  2. 使用Postman测试:
    • POST /api/users
      {
          "name": "John Doe",
          "email": "john@example.com",
          "age": 28
      }
      
    • GET /api/users 查看所有用户
    • GET /api/users/age/25 查询年龄≥25的用户

十、高级查询示例

// 在Repository中添加
@Query("FOR u IN users FILTER u.name == @name RETURN u")
List<User> findByName(@Param("name") String name);

// 复杂查询示例
@Query("FOR u IN users FILTER u.age >= @minAge AND u.age <= @maxAge RETURN u")
List<User> 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", "alice@example.com", 30);
            User user2 = new User("Bob", "bob@example.com", 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)调试查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘵奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值