Spring 按相似特征查找
Spring Find By Like Feature
我的代码中有一个实体列表(google.com、amazon.com 等),我想让我的存储库在我输入一个带有子域。
所以基本上,我实现了什么存储库功能,这样我就可以 运行 类似
public List<ValidDomainsEntity> findByCompanyDomainLike("www.google.com");
并拥有 return 在其
中具有 google.com 的实体
String companyDomain;
其中 companyDomain = "google.com"
所以用更通俗的话说:我的数据库包含 URL,但没有子域或前缀。当我输入一个带有子域 URL 的 URL 时,我在 spring 的存储库中使用什么查询来查找 URL
编辑:基本上我是如何做 spring 相当于
select * from valid_domains where 'www.amazon.com' LIKE CONCAT('%', companyDomain);
你可以用多种方式来写它。第一个选项是编写本机查询。
@Query(value = "select * from valid_domains where 'www.amazon.com' LIKE CONCAT('%', :companyDomain", nativeQuery = true);
public List<ValidDomainsEntity> myQuery(@Param("companyDomain") String companyDomain);
第二个选项是编写一个简单的非本机查询并使用您的 Entiry class 名称和字段。为此,您可以使用 javax.persistence.EntityManager
或 @Query(value = "", nativeQuery = false)
。默认@Query 是非原生查询,你不必写nativeQuery = true
。我还展示了一个 EntityManager 示例。
@Autowired //Constructor dependency injection is more preferred instead of @Autowired
private EntityManager entityManager;
List<ValidDomain> query = entityManager.createQuery("SELECT new ValidDomain(d.id, d.domainName) from ValidDomain d where 'www.amazon.com' LIKE CONCAT('%', :variableName)", ValidDomain.class).getResultList();
或者您也可以使用 EntityManager
、entityManager.createNativeQuery()
创建本机查询。
我的代码中有一个实体列表(google.com、amazon.com 等),我想让我的存储库在我输入一个带有子域。
所以基本上,我实现了什么存储库功能,这样我就可以 运行 类似
public List<ValidDomainsEntity> findByCompanyDomainLike("www.google.com");
并拥有 return 在其
中具有 google.com 的实体String companyDomain;
其中 companyDomain = "google.com"
所以用更通俗的话说:我的数据库包含 URL,但没有子域或前缀。当我输入一个带有子域 URL 的 URL 时,我在 spring 的存储库中使用什么查询来查找 URL
编辑:基本上我是如何做 spring 相当于
select * from valid_domains where 'www.amazon.com' LIKE CONCAT('%', companyDomain);
你可以用多种方式来写它。第一个选项是编写本机查询。
@Query(value = "select * from valid_domains where 'www.amazon.com' LIKE CONCAT('%', :companyDomain", nativeQuery = true);
public List<ValidDomainsEntity> myQuery(@Param("companyDomain") String companyDomain);
第二个选项是编写一个简单的非本机查询并使用您的 Entiry class 名称和字段。为此,您可以使用 javax.persistence.EntityManager
或 @Query(value = "", nativeQuery = false)
。默认@Query 是非原生查询,你不必写nativeQuery = true
。我还展示了一个 EntityManager 示例。
@Autowired //Constructor dependency injection is more preferred instead of @Autowired
private EntityManager entityManager;
List<ValidDomain> query = entityManager.createQuery("SELECT new ValidDomain(d.id, d.domainName) from ValidDomain d where 'www.amazon.com' LIKE CONCAT('%', :variableName)", ValidDomain.class).getResultList();
或者您也可以使用 EntityManager
、entityManager.createNativeQuery()
创建本机查询。