我刚开始学习spring boot,正在使用一个H2数据库,我已经得到了大部分的工作,但我遇到了麻烦,试图提出一个稍微复杂的请求。我有两个表'user'和'purche',我想创建和结束点,返回包含给定用户ID的所有购买。如果我使用SQL联接或一些类似的查询,这似乎很简单,但我不知道如何实现。
我有一个用于用户和购买的存储库(CrudRepository),然后有一个用于从数据库获取相关数据的服务。这很适合get、getById等基本需求,但我不知道如何指定查询,如join等。
public interface UserRepo extends CrudRepository<User, Integer> {}
public interface ReceiptRepo extends CrudRepository<Receipt, Integer> {}
@Service
public class UserService {
@Autowired
UserRepo userRepo;
public User getUser(int id) { return userRepo.findById(id).get(); }
}
@RestController
public class UserController {
@Autowired
UserService userService;
@GetMapping("/user/{id}")
private User getUser(@PathVariable("id") int id) {
return userService.getUser(id);
}
}
这基本上是两个实体的设置,我不确定在哪里以及如何编写更具体的查询。如有任何帮助,将不胜感激。
Yoy可以使用@query()注释来编写查询。您需要在repo中声明一个方法,并且可以在该方法上放置这个注释。
例如:
@Query("SELECT u FROM User u WHERE u.status = 1")
Collection<User> findAllActiveUsers();
你可以从这里了解更多的信息