SpringBootと統合コンポーネントのアノテーションの詳細解説(2) - Mybatis

4. Mybatis の完全なアノテーションの開発で一般的に使用されるアノテーション

1、@マッパー

dao インターフェースで動作し、宣言はマッパー クラスです。

2. @Insert、@Delete、@Update、@Select

これら 4 つのアノテーションはそれぞれ、dao インターフェースのメソッドに作用して実行される SQL ステートメントを表します。これらは文字列の配列 (または単一の文字列) を引数として受け取ります。文字列の配列が渡される場合、文字列にはスペースが埋め込まれ、単一の完全な文字列に連結されます。これにより、Java コードで SQL ステートメントを構築する際の「スペース不足」の問題が効果的に回避されます。ただし、事前に手動で文字列を連結することもできます。属性は次のとおりです。値。埋められた値は、単一の SQL ステートメントを形成するために使用される文字列の配列です。

3、@InsertProvider 、@UpdateProvider 、@DeleteProvider および @SelectProvider

動的 SQL を構築できます。これらの代替 SQL アノテーションを使用すると、実行時に実行される SQL ステートメントを返すクラス名とメソッドを指定できます。(MyBatis 3.4.6 以降、型の戻り値を String の代わりに CharSequence を使用できるようになりました。) MyBatis はマッピング文を実行するときにクラスをインスタンス化してメソッドを実行しますが、クラスとメソッドはアノテーションで満たされた値になります。マッピング メソッドに渡されたオブジェクトをパラメータとして使用できます。「Mapper インターフェイス タイプ」および「Mapper メソッド」はパラメータ値として ProviderContext (MyBatis 3.4.5 以降でのみサポート) を渡します。(MyBatis 3.4 以降のバージョンはマルチパラメータ入力をサポートしています) 属性は、タイプ、メソッドです。type 属性にはクラスを入力する必要があります。Method には、このクラスで定義されたメソッド名を入力する必要があります。次のセクションでは、動的 SQL をより簡単に構築するのに役立つクラスについて説明します。

4、@結果

メソッドの場合、結果マッピングのリストには、特定の結果列が属性またはフィールドにマッピングされる方法の詳細が含まれます。属性は、値、ID です。value 属性は、Result アノテーションの配列です。id 属性は、結果として得られるマップの名前です。

5、@結果

列と属性またはフィールド間の個々の結果のマッピング。属性は、id、column、javaType、jdbcType、typeHandler、one、many です。id 属性は、比較に使用する属性を識別するブール値です (XML マップの <id> と同様)。one 属性は <association> と同様に単一の関連付けであり、many 属性は <collection> と同様にコレクション用です。名前の競合を避けるために、このように名前が付けられています。

6、@ワン

複合型の個々のプロパティ値マップ。属性は次のとおりです。 select、適切な型のインスタンスをロードできるマップされたステートメント (つまり、マッパー メソッド) の完全修飾名。fetchType は、グローバル構成パラメータ LazyLoadingEnabled をオーバーライドします。ユニオン マッピングはアノテーション API ではサポートされていないことに注意してください。これは、循環参照が許可されていない Java アノテーションの制限のためです。

7、@たくさん

複合型のコレクション プロパティにマップします。属性は次のとおりです。select、マップされたステートメント (つまり、マッパー メソッド) の完全修飾名。これにより、適切な型のインスタンスのコレクションをロードできます。fetchType は、グローバル構成パラメーター LazyLoadingEnabled をオーバーライドします。ユニオン マッピングはアノテーション API ではサポートされていないことに注意してください。これは、循環参照を許可しない Java アノテーションの制限によるものです。

8、@MapKey

これは、Map を返すメソッドで使用されるアノテーションです。オブジェクトを格納する List を、オブジェクトの特定の属性をキー値とする Map に変換できます。属性には次のものが含まれます。 value。マップのキー値として入力されるオブジェクトの属性名です。

9、@Param

マッピング メソッドに複数の仮パラメータがある場合、このアノテーションをマッピング メソッドのパラメータに使用してカスタム名を付けることができます。カスタム名が指定されていない場合、複数のパラメーター (RowBounds パラメーターを除く) には、パラメーター エイリアスとして「param」という接頭辞が付けられ、その後にパラメーターの位置が続きます。たとえば、#{param1}、#{param2}、これはデフォルト値です。注釈が @Param("person") の場合、パラメーターの名前は #{person} になります。

10、@SelectKey

このアノテーションの機能は <selectKey> タグとまったく同じで、@Insert または @InsertProvider または @Update または @UpdateProvider によってアノテーションが付けられたメソッドで使用されます。上記 4 つのアノテーションが付けられていないメソッドに @SelectKey アノテーションが付けられた場合、そのアノテーションは無効とみなされます。@SelectKey アノテーションを指定すると、MyBatis は生成された主キーまたは @Options アノテーションによって設定された構成プロパティを無視します。属性は次のとおりです。statement には実行される SQL 文字列配列が入力され、keyProperty には更新されるパラメーター オブジェクトのプロパティの値が入力され、before には SQL ステートメントを挿入ステートメントの前または後に実行するかどうかを示す true または false が入力されます。resultType には keyProperty の Java タイプを入力し、statement、PreparedStatement、および CallableStatement の STATEMENT、PREPARED、または CALLABLE のいずれかの値をstatementType に入力します。デフォルト値は PREPARED です。

11、@ResultMap

このアノテーションは、XML マップ内の <resultMap> の ID を @Select または @SelectProvider に提供します。これにより、注釈付き選択で XML で定義された ResultMap を再利用できるようになります。同じ選択アノテーションに @Results または @ConstructorArgs がある場合、これら 2 つのアノテーションはこのアノテーションによってカバーされます。

12、@ResultType

このアノテーションは、結果ハンドラーが使用される場合に使用されます。この場合、戻り値の型は void であるため、Mybatis にはデータの各行の構築に使用されるオブジェクトの型を決定する方法が必要です。XML 結果マップがある場合は、@ResultMap アノテーションを使用します。結果の型が XML <select> ノードで指定されている場合、他の注釈は必要ありません。それ以外の場合は、この注釈を使用します。たとえば、結果ハンドラーを使用するメソッドに @Select の注釈が付けられている場合、戻り値の型は void である必要があり、この注釈 (または @ResultMap) は必須です。このアノテーションは、メソッドの戻り値の型が void の場合にのみ有効です。

13、@フラッシュ

このアノテーションが使用される場合、Mapper インターフェイスで定義されたメソッドは SqlSession#flushStatements() メソッドを呼び出すことができます。

おすすめ

転載: blog.csdn.net/qq_42133100/article/details/89098388