MongoDb Spring 存储库的@Query 命名参数
@Query named parameters for MongoDb Spring repository
是否可以在 mongodb 存储库中为 @Query 方法使用命名参数,就像我们可以使用 jpa 存储库(http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html 第 2.3.5 节)一样?
例如,我想使用以下代码:
@Query("{'store' : :store, 'app' : :app }")
List<T> findByStoreAndApp(@Param("store") String store, @Param("app") String app);
而不是:
@Query("{'store' : ?0, 'app' : ?1 }")
List<T> findByStoreAndApp(String store, String app);
恐怕 spring 引导程序在其源代码中确实提供了此功能。
您可以创建一个接口并扩展 MongoRepository
它提供了一些简单的方法,你不需要实现它。
就像使用 JpaRepository 一样。
@NoRepositoryBean
public interface MongoRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {
<S extends T> List<S> save(Iterable<S> var1);
List<T> findAll();
List<T> findAll(Sort var1);
<S extends T> S insert(S var1);
<S extends T> List<S> insert(Iterable<S> var1);
}
但是,如果你需要做一些特殊的查询。您可以只 @Autowired MongoTemplate 并使用它自己的方法。而对于redis,springboot甚至没有像MongoRepository那样提供Repository。您可以只使用 StringRedisTemplate 之类的模板进行查询操作。
可能是后者,spring boot 会为 NoSql 添加与 JpaRepository 相同的功能。但是现在,它不提供这个功能。
有可能,试试:
@Query("{'store' : :#{#store}, 'app' : :#{#app} }")
List<T> findByStoreAndApp(@Param("store") String store, @Param("app") String app);
@Query 中对 SpEL 表达式的支持是在 Spring Data MongoDB 1.8 中引入的。
是否可以在 mongodb 存储库中为 @Query 方法使用命名参数,就像我们可以使用 jpa 存储库(http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html 第 2.3.5 节)一样?
例如,我想使用以下代码:
@Query("{'store' : :store, 'app' : :app }")
List<T> findByStoreAndApp(@Param("store") String store, @Param("app") String app);
而不是:
@Query("{'store' : ?0, 'app' : ?1 }")
List<T> findByStoreAndApp(String store, String app);
恐怕 spring 引导程序在其源代码中确实提供了此功能。
您可以创建一个接口并扩展 MongoRepository 它提供了一些简单的方法,你不需要实现它。 就像使用 JpaRepository 一样。
@NoRepositoryBean
public interface MongoRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {
<S extends T> List<S> save(Iterable<S> var1);
List<T> findAll();
List<T> findAll(Sort var1);
<S extends T> S insert(S var1);
<S extends T> List<S> insert(Iterable<S> var1);
}
但是,如果你需要做一些特殊的查询。您可以只 @Autowired MongoTemplate 并使用它自己的方法。而对于redis,springboot甚至没有像MongoRepository那样提供Repository。您可以只使用 StringRedisTemplate 之类的模板进行查询操作。 可能是后者,spring boot 会为 NoSql 添加与 JpaRepository 相同的功能。但是现在,它不提供这个功能。
有可能,试试:
@Query("{'store' : :#{#store}, 'app' : :#{#app} }")
List<T> findByStoreAndApp(@Param("store") String store, @Param("app") String app);
@Query 中对 SpEL 表达式的支持是在 Spring Data MongoDB 1.8 中引入的。