我需要使用MongoTemplate
. 我使用的是 Spring Data MongoDB,所以我的大部分 CRUD 操作都是通过MongoRepository
接口进行的。我已经阅读过,@NoRepositoryBean
但我不知道如何在我的情况下使用它。
// UserRepository.java
// imports omitted
@Repository
public interface UserRepository extends MongoRepository<User, String> {
User findOneByUsername(String username);
@Query(value = "{ '_id' : ?0 }", fields = "{ 'username' : 1 }")
User getUserDetails(String userId);
}
// CustomUserRepo.java
// imports omitted
@Component
public class CustomUserRepo {
@Autowired
private final UserRepository userRepository;
public List<Todo> getUserTodos(String userId){
TypedAggregation<User> aggregation = newAggregation(
User.class, Aggregation.match(Criteria.where("_id").is(userId)),
Aggregation.unwind("todos")
);
AggregationResults<Todo> groupResults = mongoTemplate.aggregate(aggregation, User.class, Todo.class);
return groupResults.getMappedResults();
}
}
怎么做一样的UserRepository
豆子?
如果我继承UserRepository
我必须实现所有方法。如果我CustomUserRepo
抽象它就不能被实例化。
更新:
有用的文章:
但解决方案是使用类名的约定。有什么办法可以通过类设计来实现吗?