(快速参考)

findBy*

目的

使用域类的属性的动态方法来执行查询并返回第一个匹配结果。

示例

给定域类 Book

class Book {
    String title
    Date releaseDate
    String author
    Boolean paperback
}

以下所有都可能

def b = Book.findByTitle("The Shining")
b = Book.findByTitleAndAuthor("The Sum of All Fears", "Tom Clancy")
b = Book.findByReleaseDateBetween(firstDate, new Date())
b = Book.findByReleaseDateGreaterThanEquals(firstDate)
b = Book.findByReleaseDateLessThanEquals(firstDate)
b = Book.findByTitleLike("%Hobbit%")
b = Book.findByTitleIlike("%Hobbit%") // ignores case
b = Book.findByTitleNotEqual("Harry Potter")
b = Book.findByReleaseDateIsNull()
b = Book.findByReleaseDateIsNotNull()
b = Book.findPaperbackByAuthor("Douglas Adams")
b = Book.findNotPaperbackByAuthor("Douglas Adams")
b = Book.findByAuthorInList(["Douglas Adams", "Hunter S. Thompson"])

描述

GORM 支持 动态查找器 的概念。findBy* 方法找到给定的方法表达式的第一个结果。

可在各个动态方法内使用以下操作符名称

  • 小于

  • 小于等于

  • 大于

  • 大于等于

  • 介于

  • 类似(即不区分大小写的 like)

  • 不等于

  • 不等于

  • 不等于

  • 在列表中

上述操作符名称可被视为关键字,在查询带有这些名称之一用作属性名的域类时,您将遇到问题。如需了解有关 动态查找器 的更多信息,请参考用户指南。