Mybatisアノテーションは動的SQLステートメントを開発しました
ガイド:
mybatisアノテーションを使用して動的SQLを開発することは煩雑で不便なため、お勧めしません。
この記事では、クエリを使用して動的SQLステートメントを説明します。
注:
Mybatisの動的SQLステートメントの開発は、3つの書き込み方法に分けることができます。 :
- スクリプト動的SQLステートメント
- メソッドで定義されたSQL
- 構造化SQL
0.ケース環境:
a。エンティティークラスユーザーエンティティークラス
の属性はgetおよびsetメソッドを
提供しますエンティティークラスはtoString()メソッドを提供します
b。インターフェースIUserDao
c。要件
動的SQL を使用するには、IUserDaoインターフェイスでfindUserByConditionメソッドを実行します。username
属性に値がある場合は、username = valueをクエリ条件に追加します。sex 属性に値
がある場合、クエリ条件は販売者のsex = valueでもあります。
動的SQL実装:
1.スクリプト動的SQLステートメント
XMLの動的SQLステートメントを注釈に直接コピーし、スクリプトタグを使用してそれを含めます。
2.メソッドでSQLステートメントを定義する
2.1動的SQLステートメントを生成するためのクラスを定義する必要があり、
findUserByCondition()メソッドがSQLステートメントを生成するためのクラス内のメソッドを定義する必要があります。
2.2 SELECT()、FROM()、WHERE()などを使用して、メソッドでSQLステートメントを動的に生成できます。
2.3このクラスのこのメソッドを、インターフェースのfindUserByCondition()メソッドに構成します。
このメソッドで使用されるクエリのSQLステートメント
が、UserDynaSqlProviderクラスのfindUserByConditionSqlメソッドによって提供されることを示します
3.構造化SQLステートメント
注:このメソッドは、SQLステートメントをアセンブルするときの構文が少し異なることを除いて、メソッド2とまったく同じ
です
。3.1 動的SQLステートメントを生成するために特別にクラスを定義する必要があります。また、SQLステートメントを生成するために、findUserByCondition()メソッド専用にクラスにクラスを定義します。メソッド。
3.2 SELECT()、FROM()、WHERE()などを使用して、メソッドでSQLステートメントを動的に生成できます。
3.3このクラスのこのメソッドを、インターフェースのfindUserByCondition()メソッドに構成します。
このメソッドで使用されるクエリのSQLステートメントが、UserDynaSqlProviderクラスの
findUserByConditionSqlメソッドによって提供されることを示します。
テスト:
テストコードが次のとおりの場合:
次に、プログラムによって生成されるSQLステートメントは次のとおりです。
結果は次のとおりです。
テストコードが次の場合:
次に、プログラムによって生成されるSQLステートメントは次のとおりです。
結果は次のとおりです。