Class VariableOrderBySyntaxConvertor
java.lang.Object
nablarch.core.db.statement.sqlconvertor.SqlConvertorSupport
nablarch.core.db.statement.sqlconvertor.VariableOrderBySyntaxConvertor
- All Implemented Interfaces:
SqlConvertor
SQL文の可変ORDER BY構文を変換するクラス。
-
Constructor Summary
-
Method Summary
Methods inherited from class nablarch.core.db.statement.sqlconvertor.SqlConvertorSupport
getBindValue
-
Constructor Details
-
VariableOrderBySyntaxConvertor
public VariableOrderBySyntaxConvertor()
-
-
Method Details
-
convert
SQL文の可変ORDER BY構文を変換する。 可変ORDER BY構文の仕様は下記のとおり。$sort(フィールド名) {(ケース1)(ケース2)・・・(ケースn)} ケース: ORDER BY句の切り替え候補を表す。 候補を一意に識別するソートIDとORDER BY句に指定する文字列(以降はケース本体と称す)を記述する。 どの候補にも一致しない場合に使用するデフォルトのケースには、ソートIDに"default"を指定する。 フィールド名: 検索条件オブジェクトからソートIDを取得する際に使用するフィールド名を表す。
ケース部分の仕様は下記のとおり。- 各ケースは、ソートIDとケース本体を半角丸括弧で囲んで表現する。
- ソートIDとケース本体は、半角スペースで区切る。
- ソートIDには半角スペースを使用不可とする。ケース本体には半角スペースを使用できる。
- 括弧開き以降で最初に登場する文字列をソートIDとする。
- ソートID以降で括弧閉じまでの間をケース本体とする。
- ソートIDおよびケース本体はトリミングする。
デフォルトのケースを指定したSQL文の場合 SELECT * FROM USER WHERE USER_ID = :userId $sort(sortId) {(1 USER_ID ASC) (2 USER_ID DESC) (3 USER_ID, KANJI_NAME ASC) (4 USER_ID, KANJI_NAME DESC) (default USER_ID ASC)} sortId = 1: SELECT * FROM USER WHERE USER_ID = :userId ORDER BY USER_ID ASC sortId = 4: SELECT * FROM USER WHERE USER_ID = :userId ORDER BY USER_ID, KANJI_NAME DESC sortId = null: SELECT * FROM USER WHERE USER_ID = :userId ORDER BY USER_ID ASC デフォルトのケースを指定しないSQL文の場合 SELECT * FROM USER WHERE USER_ID = :userId $sort(sortId) {(1 USER_ID ASC) (2 USER_ID DESC) (3 USER_ID, KANJI_NAME ASC) (4 USER_ID, KANJI_NAME DESC)} sortId = null: SELECT * FROM USER WHERE USER_ID = :userId
- Parameters:
sql
- SQL文obj
- 検索条件をもつオブジェクト- Returns:
- 可変ORDER BY構文を変換したSQL文
-