DBFluteでnot like

not like って、あまり機会がないのかもしれないけど、これが必要になって、ちょっと調べる。DBFlute を確認したけど、like を not like にするようなオプションも見当たらない気がしたので、not like の ConditionKey を追加して対応した。やったことは、

ConditionKeyNotLikeSearch の作成

~/allcommon/cbean/ckey/ConditionKeyLikeSearch.java を ConditionKeyNotLikeSearch.java としてコピーして、_operand を not like にしておく。

ConditionKeyNotLikeSearchを追加

以下みたいな感じで、AbstractConditionQuery と ConditionKey を変更しておく。

--- ~/allcommon/cbean/AbstractConditionQuery.java
+++ ~/allcommon/cbean/AbstractConditionQuery.java
protected static final ConditionKey CK_LS = ConditionKey.CK_LIKE_SEARCH;
+    protected static final ConditionKey CK_NLS = ConditionKey.CK_NOT_LIKE_SEARCH;
+
protected static final ConditionKey CK_INS = ConditionKey.CK_IN_SCOPE;
protected static final ConditionKey CK_NINS = ConditionKey.CK_NOT_IN_SCOPE;
--- ~/allcommon/cbean/ckey/ConditionKey.java
+++ ~/allcommon/cbean/ckey/ConditionKey.java
/** The condition key of likeSearch. */
public static final ConditionKey CK_LIKE_SEARCH = new ConditionKeyLikeSearch();
+    /** The condition key of notLikeSearch. */
+    public static final ConditionKey CK_NOT_LIKE_SEARCH = new ConditionKeyNotLikeSearch();
+
/** The condition key of inScope. */
public static final ConditionKey CK_IN_SCOPE = new ConditionKeyInScope();

~CQ にメソッド追加

あとは、not like をしたいカラムでできるようにメソッドを追加しておく。以下みたいな感じ。

--- ~/cbean/cq/bs/AbstractBs~CQ.java
+++ ~/cbean/cq/bs/AbstractBs~CQ.java
"content", "Content", "content", likeSearchOption);
}
+    public void setContent_NotLikeSearch(
+            String content,
+            ~.allcommon.cbean.coption.LikeSearchOption likeSearchOption) {
+        registerLikeSearchQuery(CK_NLS, fRES(content), getCValueContent(),
+                "content", "Content", "content", likeSearchOption);
+    }
+
/**
* InScope(in ('a', 'b')). And NullOrEmptyIgnored,
* NullOrEmptyElementIgnored, SeveralRegistered.

あとは、like と同様にやれば良いのではないかな(いろんなLikeSearchOptionで実験とかはしてない)。

「DBFluteでnot like」への2件のフィードバック

  1. ありがとうございます!
    参考にさせて頂き、次バージョン(0.8.5)にて取り込みました(SNAPSHOTに反映)。
    エスケープも大丈夫でした。
    (3年近くやってて、多分初めて話題に上りました(NotLikeSearch))

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です