JpaRepository 命名规范

Keyword Sample JPQL
And findByLastnameAndFirstname where x.lastname=?1 and x.firstname=?2
Or findByLastnameOrFirstname where x.lastname=?1 or x.firstname=?2
Between findByStartDateBetween where x.startDate between ?1 and ?2
LessThan findByAgeLessThan where x.startDate < ?1
GreaterThan findByAgeGreaterThan where x.startDate >?1
After findByStartDateAfter where x.startDate >n ?1
Before findByStartDateBefore where x.startDate < ?1
IsNull findByAgeIsNull where x.age is null
IsNotNull,NotNull findByAge(Is)NotNull where x.age not null
Like findByFirstnameLike where x.firstname like ?1
notLike findByFirstnameNotLike where x.firstname not like ?1
StartingWith findByFirstnameStartingWithXXX where x.firstname like ?1(parameter bound with appended %)
EndingWith findByFirstnameEndingWithXXX where x.firstname like ?1(parameter bound with appended %)
Containing findByFirstnameContaining where x.firstname like ?1(parameter bound wrapped in %)
OrderBy findByAgeOrderByLastname where x.age = ?1 order by x.lastname desc
Not findByLastnameNot where x.lastname <> ?1
NotIn findByAgeNotIn(Collection age ) where x.age not in ?1
True findByActiveTrue() where x.active = true
False findByActiveFalse()

where x.active = false


例:

@RepositoryDefinition(domainClass = Employee.class, idClass = Integer.class)
public interface EmployeeRepository { //extends Repository<Employee,Integer>{

    public Employee findByName(String name);

    // where name like ?% and age <?
    public List<Employee> findByNameStartingWithAndAgeLessThan(String name, Integer age);

    // where name like %? and age <?
    public List<Employee> findByNameEndingWithAndAgeLessThan(String name, Integer age);

    // where name in (?,?....) or age <?
    public List<Employee> findByNameInOrAgeLessThan(List<String> names, Integer age);

    // where name in (?,?....) and age <?
    public List<Employee> findByNameInAndAgeLessThan(List<String> names, Integer age);

    @Query("select o from Employee o where id=(select max(id) from Employee t1)")
    public Employee getEmployeeByMaxId();

    @Query("select o from Employee o where o.name=?1 and o.age=?2")
    public List<Employee> queryParams1(String name, Integer age);

    @Query("select o from Employee o where o.name=:name and o.age=:age")
    public List<Employee> queryParams2(@Param("name")String name, @Param("age")Integer age);

    @Query("select o from Employee o where o.name like %?1%")
    public List<Employee> queryLike1(String name);

    @Query("select o from Employee o where o.name like %:name%")
    public List<Employee> queryLike2(@Param("name")String name);

    @Query(nativeQuery = true, value = "select count(1) from employee")//这个使用了原生sql
    public long getCount();

    @Modifying
    @Query("update Employee o set o.age = :age where o.id = :id")
    public void update(@Param("id")Integer id, @Param("age")Integer age);


}



猜你喜欢

转载自blog.csdn.net/samhuangliang/article/details/80484505