Cor*_*han 9 java spring mongodb spring-data-mongodb
所以我注意到Spring Data的MongoTemplate有很多不同类型的"保存对象"操作,比如save,upsert,insert和updateFirst.
另一方面,Spring Data的MongoRepository接口有一个持久化方法:"save".现在,显然,如果我想要创建/更新/ upsert功能,我可以很容易地实现它们.在调用"save"之前先做一个get,然后检查实体是否存在.但看起来很奇怪,MongoTemplate有如此多样的选项(我甚至无法弄清楚保存和upsert之间的区别是什么),但是Spring Data的回购是如此有限.
如果您要使用创建/更新语义,或者get + null检查+ repository.save与mongoTemplate.insert之间的区别,您认为使用Spring Data MongoRepositories而不自定义其方法是浪费/懒惰吗?与关心无关?
您可以使用XXXRepositoryCustom自定义您自己的存储库并为其编写实现.
这是一个例子:
public interface AccountRepository extends MongoRepository<Account, String>, AccountRepositoryCustom{
@Query("{ 'email' : ?0 }")
Account findByEmail(String email);
}
Run Code Online (Sandbox Code Playgroud)
请注意,上面的接口扩展了您自己的AccountRepositoryCustom接口.
然后定义自己的AccountRepositoryCustom:
public interface AccountRepositoryCustom {
public boolean updateAccountToken(String id, String token);
}
Run Code Online (Sandbox Code Playgroud)
接下来,为它编写一个实现:
public class AccountRepositoryCustomImpl implements AccountRepositoryCustom {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public boolean updateAccountToken(String id, String token) {
// your code
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8521 次 |
| 最近记录: |