LoginSignup
1
2

More than 3 years have passed since last update.

【DBFlute】外だしSQL構文一覧

Last updated at Posted at 2019-05-26

単純コメント

  • ユーザが自由に設定できる無為コメント
  -- 行コメント
  /* ブロックコメント */

バインド変数コメント

  • 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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2