DBFlute: 出力する条件メソッドを取捨選択


例えば、「NotInScope」・「日付のNotEqual」などほとんど利用しない
条件は出力するだけソース量の無駄使いなので、出力しないようにしたい場合:

./dfprop/includeQueryMap.dfprop というファイルに

# /---------------------------------------------------------------------------
# [Include Query] (NotRequired - Default 'map:{}')
#
map:{
; String = map:{
; NotInScope = map:{}
}
; Number = map:{
; NotInScope = map:{}
}
; Date = map:{
; NotEqual = map:{}
}
}
# ----------------/

とすると、出力されないようになります。

この記述の文法ですが、「指定されていない(登場していない)条件は全て出力する」
になり、指定された場合は、「指定された条件の指定された列のみで出力する」になります。

なので本当は

; Date = map:{
; NotEqual = map:{ MEMBER = list:{REGIST_DATE;UPDATE_DATE} }
}

というように、「このテーブルのこの列にだけ出力したい」というのを指定します。
そこで、

; Date = map:{
; NotEqual = map:{}
}

と指定すると、どこにも出力しないということになります。


また、EMechaの次のバージョン(0.1.1!?)では、
以下の設定をデフォルトとしたいと考えます。

# /---------------------------------------------------------------------------
# [Include Query] (NotRequired - Default 'map:{}')
#
map:{
; String = map:{
; GreaterThan = map:{}
; LessThan = map:{}
; GreaterEqual = map:{}
; LessEqual = map:{}
; NotInScope = map:{}
}
; Number = map:{
; NotInScope = map:{}
}
; Date = map:{
; NotEqual = map:{}
}
}
# ----------------/

先ほどの設定に、「文字列の{<=.<.>.>=}」を除去しています。
これもあまり利用頻度が高くないと考えたからです。
これにより、かなり出力されるソース行数は減るかと思われます。
もちろん、文字列の8桁日付などを利用されている方は、
利用されると思いますので、その場合は上記設定から
該当部分の行を削除すればOKです。
もしくは、利用箇所が一箇所だけとかであれば、
その列をピンポイントで指定するのもOKです。

テーブル数が、50以下くらいであればあまりこの辺を気にする必要はないでしょう。
しかし、100を超えるような場合は、上記設定をすることで少しでもコンパイル
速めることが可能です。


#
# 但し、その前に、文字列で比較演算子を使うDB構造って
# 世の中でどの程度存在するのでしょうか!?!?
# 自分の関わったプロジェクトでも確かに全くなかったわけではなく、
# 結構、みんな普通に「文字列型の列 < 'xxx'」ってやるのであれば、
# もうちょっと調整しようかなと思っています。
#