1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql.select;
17
18 import java.util.Objects;
19
20 import org.mybatis.dynamic.sql.SortSpecification;
21 import org.mybatis.dynamic.sql.SqlColumn;
22 import org.mybatis.dynamic.sql.render.RenderingContext;
23 import org.mybatis.dynamic.sql.util.FragmentAndParameters;
24
25 public class ColumnSortSpecification implements SortSpecification {
26 private final String tableAlias;
27 private final SqlColumn<?> column;
28 private final String descendingPhrase;
29
30 public ColumnSortSpecification(String tableAlias, SqlColumn<?> column) {
31 this(tableAlias, column, "");
32 }
33
34 private ColumnSortSpecification(String tableAlias, SqlColumn<?> column, String descendingPhrase) {
35 this.tableAlias = Objects.requireNonNull(tableAlias);
36 this.column = Objects.requireNonNull(column);
37 this.descendingPhrase = descendingPhrase;
38 }
39
40 @Override
41 public SortSpecification descending() {
42 return new ColumnSortSpecification(tableAlias, column, " DESC");
43 }
44
45 @Override
46 public FragmentAndParameters renderForOrderBy(RenderingContext renderingContext) {
47 return FragmentAndParameters.fromFragment(tableAlias + "." + column.name() + descendingPhrase);
48 }
49 }