単純コメント
- ユーザが自由に設定できる無為コメント
-- 行コメント
/* ブロックコメント */
バインド変数コメント
- SQLに渡すバインド変数を定義する。
- 「pmb.任意の名前」で定義する。
バインド変数コメント
-- 数値 (Integer)
DEARTMENT.ID = /*pmb.id*/20
-- 文字列 (String)
DEARTMENT.NAME = /*pmb.name*/''
DEARTMENT.NAME = /*pmb.name*/'20'
-- IN句 (List<String>)
DEPARTMENT.ID IN /*pmb.id*/()
DEPARTMENT.ID IN /*pmb.id*/('10')
(List<Integer>)
DEPARTMENT.ID IN /*pmb.id*/(10)
-- 日付 (LocalDate)
D.START_DATE = /*pmb.startDate*/date '2019-04-01'
IFコメント
- 条件を満たした場合、IFコメント内の文字列が展開される。
IFコメント
/*検索条件*/
条件を満たした場合ここの記述が展開される。
/*END*/
-- 文字列
/*IF pmb.name > '総務部'*/
-- 数値
/*IF pmb.id >= 100*/
-- 日付
/*IF pmb.startDate > date '2019-04-01'*/
-- 論理値 (true, false)
/*IF pmb.testFlag*/
/*IF !pmb.testFlag*/
-- AND 条件
/*IF pmb.memberId == 100 && pmb.menberId == 200*/
-- OR 条件
/*IF pmb.memberId == 100 || pmb.menberId == 200*/
-- 未設定でない
/*IF pmb.memberName != null && pmb.menberName != ''*/
複雑なIF文をjavaで定義する。
- AND,ORの併用ができない場合や,複雑な条件の場合はPmbクラスに判定メソッドを定義する。
DeartmentByPkPmb.java
public boolean complexCondition() {
if (10 <= this._id && this._id <= 20) {
return true;
} else if (this._id % 4 == 0) {
return true;
}
return false;
}
sqlファイル
/*IF pmb.complexCondition()*/
D.ID = /*pmb.id*/10
/*END*/
ELSEコメント
- IFコメントを満たさない場合に実行される。
- IF文の『内側』に書かないといけない。
- 行コメントのみ使用可能
- 複数記述可能
ELSEコメント
/*IF pmb.id != null*/
D.ID = /*pmb.id*/10
--ELSE D.ID = '10'
--ELSE AND D.START_DATE = '2019-04-01'
--ELSE AND D.END_DATE = '2020-03-31'
/*END*/
ELSEコメントをIF文で代替
/*IF pmb.id != null*/
D.ID = /*pmb.id*/10
/*IF pmb.id == null*/
D.ID = '10'
AND D.START_DATE = '2019-04-01'
AND D.END_DATE = '2020-03-31'
/*END*/
BEGINコメント
- BEGIN内のすべての条件がfalseの場合,BEGIN内の記述をすべて削除する。
- where句やAND句の取りこぼしを削除するために使用する。
パターン1 (id = null, name = '人事部')
BEGINコメントなし
展開前
WHERE
/*IF pmb.id != null*/
D.ID = /*pmb.id*/10
/*END*/
/*IF pmb.name != null*/
AND D.NAME = /*pmb.name*/'総務部'
/*END*/
展開後
WHERE
AND D.NAME = '人事部' ★構文エラー : ANDから始まっている。
BEGINコメントあり
展開前
/*BEGIN*/
WHERE
/*IF pmb.id != null*/
D.ID = /*pmb.id*/10
/*END*/
/*IF pmb.name != null*/
AND D.NAME = /*pmb.name*/'総務部'
/*END*/
/*END*/
展開後
WHERE
D.NAME = '人事部' ★ANDを削除してくれる。
パターン2 (id = null, name = null)
BEGINコメントなし
展開前
WHERE
/*IF pmb.id != null*/
D.ID = /*pmb.id*/10
/*END*/
/*IF pmb.name != null*/
AND D.NAME = /*pmb.name*/'総務部'
/*END*/
展開後
WHERE ★構文エラー : 条件式がない
BEGINコメントあり
展開前
/*BEGIN*/
WHERE
/*IF pmb.id != null*/
D.ID = /*pmb.id*/10
/*END*/
/*IF pmb.name != null*/
AND D.NAME = /*pmb.name*/'総務部'
/*END*/
/*END*/
展開後
★WHERE句を削除してくれる。
スペースについて
-- 単純コメント : コメント前後に空白を入れる。
/* ブロックコメント */
-- バインド変数コメント : 空白はダメ。(Sql2Entity実行時エラー。)
/*pmb.name*/''
-- 条件コメント : 空白はダメ。(実行時構文エラーになる。)
/*IF*/
/*END*/
/*BEGIN*/
参考サイト
公式サイト
http://dbflute.seasar.org/ja/manual/function/ormapper/outsidesql/pmcomment.html#endcomment