Service
public interface BaseService<M, N extends Serializable> {
List<M> findAll();
M find(N id);
M insert(M entity);
M update(M entity);
void delete(N... ids);
}
ServiceImpl
public class BaseServiceImpl<M, N extends Serializable> implements BaseService<M, N> {
@Autowired
MongoTemplate mongoTemplate;
public Class<M> getTClass() {
return (Class<M>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
@Override
public List<M> findAll() {
return mongoTemplate.findAll(getTClass());
}
@Override
public M find(N id) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
M one = mongoTemplate.findOne(query, getTClass());
return one;
}
@Override
public M insert(M entity) {
return mongoTemplate.insert(entity);
}
@Override
public M update(M entity) {
return mongoTemplate.save(entity);
}
@Override
public void delete(N... ids) {
for (N n : ids) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(n));
mongoTemplate.remove(query, getTClass());
}
}
}