ファジークエリのようなMyBatisの例基準

これはMyBatisのコード生成ツールで多くのXXXExampleクラス、どのような役割これらのクラスを持っているのだろうか?

何を要約するために、ここで多くの情報をチェックしてください


複雑なフィルタ条件を構築するためのXXXExampleクラス

これは、where句で一緒にバインドされた条件のリストが含まれている基準と呼ばれる内部の静的クラスが含まれています。

Criteriaクラスのコレクションを使用すると、where句のほとんど無制限の種類を作成することができます。

基準はのcreateCriteriaまたはメソッドまたはメソッドを使用してオブジェクトを作成することができます。

あなたが基準のcreateCriteriaメソッドを使用して最初のオブジェクトを作成すると、自動的にCriteriaオブジェクトのリストに追加されます -

いいえ、他の句の場合は、簡単なWhere句を書くことができます。方法または使用、Criteriaクラスは、すべてのインスタンスのリストに追加しました。

公式使用は、Criteriaクラスやメソッドを作成することをお勧めします。この方法は、コードをより読みやすくすることができます。

基準クラス
基準インナークラスandXXX各フィールドを含む方法、および標準のSQL述部のそれぞれであって

フィールドを意味方法は、
関連する列をすべきであることを示すNULL NULL IS
IS NOT NULL NULLを表現が列を関連付けられていない
メソッドの呼び出しに渡された値に等しくなるように、関連する列を表す=(等しい)
、<>(等しくない)関連する列は、メソッド呼び出しに等しくされていないことを示します着信値
>の値は、メソッド呼び出しに渡されるよりも、関連する列は大きくなければならない表す(より大きい)
> =(以上)の関連する列を表すには、メソッド呼び出しに渡された以上の値に等しくなければならない
関連する列未満でなければならない表す<(未満)メソッド呼び出しは、の値が渡される
<=(より小さいか等しい)、関連する列は未満であるか、渡されたメソッド呼び出しの値に等しくなければならない表す
「類似」メソッドの呼び出しが渡された値でなければならない列に関連する手段が挙げられます。コードは、メソッド呼び出しの値に渡された、独自の値を設定する必要があり、必要な「%」を追加しません。
関係のない列LIKEは「嫌い」メソッド呼び出しの着信値を意味する必要があります。コードは、メソッド呼び出しの値に渡された、独自の値を設定する必要があり、必要な「%」を追加しません。
関連する列が2つの値の間のメソッド呼び出し「の」渡さなければならないことを意味BETWEEN。
れていない手段間のメソッド呼び出しで渡された2つの値の間の関連する列なければなりません「」。
INは、関連する列が値の入ってくるリストの1回のメソッド呼び出しでなければなりません表します。
NOT INは、関連する列が値のいずれかのメソッド呼び出しリストに渡すことができないことを示しています。
簡単の例
WHERE句の簡単の生成
TestTableExample例=新しいTestTableExample()。

example.createCriteria()andField1EqualTo(5)。

或者

TestTableExample例=新しいTestTableExample()。

。example.or()andField1EqualTo(5) ;
句であり、実際に動的に生成されました

。FIELD1 = 5
。1
複雑なクエリ
TestTableExample例=新しいTestTableExample()。

example.or()
.andField1EqualTo(5)
.andField2IsNull();

example.or()
.andField3NotEqualTo(9)
.andField4IsNotNull();

一覧<整数> field5Values =新しいのArrayList <Integer型>();
field5Values.add(8)。
field5Values.add(11)。
field5Values.add(14)。
field5Values.add(22)。

example.or()
.andField5In(field5Values)。

example.or()
.andField6Between(3 ,. 7);
句であり、実際に動的に生成されました

(FIELD1 = 5およびフィールド2がNULL)WHERE
または(フィールド3 <> 9及びフィールド4ではなくヌル)
または(フィールド5(8において,. 11、14、22である))
または(Field6 BETWEEN 3及び7)

ベースの例のいずれかによって調製することができます。コールsetDistinct上(true)メソッドは、DISTINCTとしてクエリを強制します。
ファジィクエリ戦闘
自分PageHelperあいまいクエリとの理解に基づく単純な複数の基準が理解深めます

以下の特定の検索複数のフィールドを達成するために同時にサポート

PageHelper.startPage(PAGENUM、pageSizeを)。
TbBrandExample例=新しいTbBrandExample()。
TbBrandExample.Criteria基準= example.createCriteria()。
IF(tbBrand!= NULL){
IF(tbBrand.getName()!= NULL && tbBrand.getName()。長さ()> 0){
criteria.andNameLike( "%" + tbBrand.getName()+ "%") ;
}
IF(!。tbBrand.getFirstChar()= NULL && tbBrand.getFirstChar()の長さ()> 0){
criteria.andFirstCharLike( "%" + tbBrand.getFirstChar()+ "%")。
}
}
ページ<TbBrand>ページ=(ページ<TbBrand>)brandMapper.selectByExample(例)
新しいPageResultを返します((int型)page.getTotal()、page.getResult());

おすすめ

転載: www.cnblogs.com/ceshi2016/p/12014362.html