所以我注意到 Spring Data 的 MongoTemplate 有很多不同类型的“保存对象”操作,比如保存、更新插入、插入和更新优先。
另一方面,Spring Data 的 MongoRepository 接口(interface)有一个持久化方法:“保存”。现在,很明显,如果我想要创建/更新/更新插入功能,我可以很容易地实现它们。在你调用“保存”之前做一个获取并检查实体是否存在。但是 MongoTemplate 有如此多样的选择似乎很奇怪(我什至无法弄清楚保存和更新插入之间的区别是什么),但是 Spring Data 的 repos 非常有限。
如果您要使用创建/更新语义,您认为在不自定义其方法的情况下使用 Spring Data MongoRepositories 是浪费/懒惰,还是 get + null check + repository.save 与 mongoTemplate 之间的区别.insert 太无关紧要了?
最佳答案
您可以使用 XXXRepositoryCustom 并为其编写实现来自定义您自己的存储库。
这是一个例子:
public interface AccountRepository extends MongoRepository<Account, String>, AccountRepositoryCustom{
@Query("{ 'email' : ?0 }")
Account findByEmail(String email);
}
注意上面的接口(interface)扩展了你自己的 AccountRepositoryCustom 接口(interface)。
然后定义你自己的AccountRepositoryCustom:
public interface AccountRepositoryCustom {
public boolean updateAccountToken(String id, String token);
}
接下来,为它写一个实现:
public class AccountRepositoryCustomImpl implements AccountRepositoryCustom {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public boolean updateAccountToken(String id, String token) {
// your code
}
}
关于java - 为什么 Spring Data 的 MongoRepository 如此有限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17802360/