跳到主要内容

5.1 基本用法

多个orderBy

BookTable table = BookTable.$;

List<Book> books = sqlClient
.createQuery(table)
.orderBy(table.name().asc())
.orderBy(table.edition().desc())
.select(table)
.execute();

orderBy带多个参数

还有另外一种写法与上述代码等价

BookTable table = BookTable.$;

List<Book> books = sqlClient
.createQuery(table)
.orderBy(
table.name().asc(),
table.edition().desc()
)
.select(table)
.execute();

然而,之前的写法更利于代码结构组织,故而更推荐之前的写法。

基于子查询的排序

BookTable table = BookTable.$;
AuthorTableEx author = AuthorTableEx.$;

List<Book> books = sqlClient
.createQuery(table)
.orderBy(
sqlClient
.createSubQuery(author)
.where(author.books().eq(table))
.select(Expression.rowCount())
.desc()
)
.select(table)
.execute();