查询创建器
与Spring-Data-JPA的查询创建器一致,如果你用过Spring-Data-JPA,那么对此应当熟悉。
示例
在mapper中,使用@NamingQuery标识一个接口为查询创建器,否则会认为映射的的是由xml配置的statement
与Spring-Data-JPA一样,查询属性可以为关联实体的属性
条件关键字
| 关键字 | 例子 | 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.age < ?1 |
| GreaterThan | findByAgeGreaterThan | … where x.age > ?1 |
| After | findByStartDateAfter | … where x.startDate > ?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 | findByFirstnameStartingWith | … where x.firstname like ?1(parameter bound with appended %) |
| EndingWith | findByFirstnameEndingWith | … where x.firstname like ?1(parameter bound with prepended %) |
| Containing | findByFirstnameContaining | … where x.firstname like ?1(parameter bound wrapped in %) |
| OrderBy | findByAgeOrderByLastnameDesc | … where x.age = ?1 order by x.lastname desc |
| Not | findByLastnameNot | … where x.lastname <> ?1 |
| In | findByAgeIn(Collection ages) | … where x.age in ?1 |
| NotIn | findByAgeNotIn(Collection age) | … where x.age not in ?1 |
| True | findByActiveTrue() | … where x.active = true |
| False | findByActiveFalse() | … where x.active = false |
操作关键字
| 关键字 | 例子 | JPQL 片段 |
| find/read/get/query/stream | findByLastname | select ... where x.lastname = ?1 |
| count | countByLastname | select count(*) from ... where x.lastname = ?1 |
| Distinct | findDistinctByLastname | select distinct ... where x.lastname = ?1 |
| delete/remove | deleteByLastname | delete from ... where x.lastname = ?1 |
行限制关键字(示例目标数据库为Mysql)
| 关键字 | 例子 | JPQL 片段 |
| Top | findTop5ByLastname | select ... where x.lastname = ?1 limit 5 |
| First | findFirstByLastname | select ... where x.lastname = ?1 limit 1 |