如何使用Spring JPA查询名称约定来查询通配符



我使用JPA查询名称约定来查询数据库。它确实提供了一种很好的查询方式,为我节省了很多精力。下面是我用来按姓名和性别查询的一个例子。

public interface SysUserRepository extends CrudRepository<SysUserEntity, Integer>{
   SysUserEntity findByUserNameAndSex(String name, String sex);
}

它工作得很好,但我不知道它是否支持通配符查询。例如,我想搜索所有名字以"Z"开头的男人。我如何使用上面的方法为我做那个查询?所以我想写一些像下面这样的东西来进行查询:

  findByUserNameAndSex("Z*", "male")

JPA是否支持这种查询?

参考本文档,您可以使用"StartingWith":

SysUserEntity findByNameStartingWithAndSex(String name, String sex);

这对应于:

@Query("select su from sysuser su where su.name like ?1% and su.sex = ?2")

您可以创建这样的查询:

Query query = em.createQuery("SELECT c FROM table c WHERE c.sex = :sex AND c.name LIKE CONCAT(:name, '%')");
query.setParameter('sex', sex);
query.setParameter('name', name);

最新更新