spring data mongodb 有2種使用方式:
第一種是Repository,能夠直接繼承MongoRepository等接口,使用CRUD等方法和JPA的方法而不用寫實現
第二種就是使用mongoTemplate,需要自己寫實現類,增刪改查可以自己控制
我們項目中可以同時使用兩種方式:
準備:
實體類Role:
@Document(collection = "role")
public class Role extends Contact {
@Id
private String id;
private String name;
private int age;
1.需要使用mongoTemplate的接口:
public interface RoleRepositoryEnhance {
saveEntity(Role role){
}
2.實現類(這個類名是固定的)public class RoleRepositoryImpl implements RoleRepositoryEnhance {
@Autowired
MongoTemplate mongoTemplate;
@Override
public void saveEntity(Role role){
mongoTemplate.save(role);
}
}
3.Repository
@Repository
public interface RoleRepository extends MongoRepository<Role,String>,RoleRepositoryEnhance {
}
此時就可以注入RoleRepository,然後使用Repository的JPA方法 和 我們自定義使用mongoTemplate的方法了
原理:
spring 注入這個接口的實現類的時候,遇到RoleRepositoryEnhance 這個接口,會自動去尋找RoleRepositoryImpl這個實現類,也就是類名是RoleRepository+Impl 注入到實現類裏