序文
現在、ほとんどのプロジェクトはMyBatisを使用していますが、一部の企業はHibernateを使用しています。 MyBatisの使用の最大の特徴は、SQLを単独で記述する必要があることであり、SQLを作成するには複数のパラメーターを渡す必要があることです。さまざまな複雑なビジネスシナリオに直面しているパラメーターも一種の知識です。
以下に、マルチパラメーター伝送の次の方法を要約します。
方法1:シーケンシャルパラメーター転送方法
#{}の数字は、パラメーターを渡す順序を表します。
この方法は使用することをお勧めしません。SQLレイヤー式は直感的ではなく、順序が調整されるとエラーが発生する傾向があります。
方法2:パラメーターを渡す@paramアノテーション方法
#{}の名前は、Annotation @Param Bracketsで変更された名前に対応しています。
この方法は、多くのパラメーターがない場合は非常に直感的であるため、使用することをお勧めします。
方法3:マップパラメーター転送方法
#{}の名前は、マップのキー名に対応しています。
この方法は、複数のパラメーターを渡すのに適しており、パラメーターは揮発性であり、柔軟に送信できます。
方法4:Java Beanパラメーター転送方法
#{}の名前は、ユーザークラスのメンバー属性に対応しています。
この方法は非常に直感的ですが、エンティティクラスを構築する必要があります。拡張するのは簡単ではありません。状況に応じて使用する属性を追加する必要があります。
マッパーインターフェイスを使用する場合のパラメーター通過方法
Mybatisがプログラミングにマッパーインターフェイスを使用する場合、基礎となる層は、表面で呼び出される動的プロキシメカニズムを使用しますが、実際には、Selectone()などの動的プロキシによって呼び出されるSQLSessionの対応する方法を使用します。興味のある友人は、DefaultSQLSessionのgetMapper()メソッドを確認できます。 MapperProxyオブジェクトがマッパーインターフェイスメソッドを呼び出すと、渡されたパラメーターを変換し、変換されたパラメーターをパラメーターとして使用して、SQLSession(Selectone、Insertなど)に対応する対応する操作メソッドを呼び出します。変換プロセスは、mappermethodのexecute()メソッドを参照して実装できます。簡単に言えば、次のルール:
1.渡されたスルーが単一のパラメーターであり、@Paramアノテーションに命名されていない場合、対応するSQLSESSIONメソッドは、単一パラメーターと実際のパラメーターとして直接呼び出されます。
2.渡されたものが単一のパラメーターではない場合、または@Param Annotationに名前が付けられたパラメーターが含まれている場合、対応するパラメーターは合格するためにマップに変換されます。特定のルールは次のとおりです。
2.1。対応するパラメーターは、PARAM1、PARAM2、およびPARAMNの形式でターゲットマップのキーとして保存されます。最初のパラメーターはPARAM1であり、nthパラメーターはparamnです。
2.2。パラメーターが@Param Annotationに名前が付けられたパラメーターである場合、 @Paramが指定した名前をキーとしてターゲットマップに保存します。
2.3。パラメーターに@Param Annotationにちなんで命名されていない場合、ターゲットマップのキーとして0、1、およびnの形で順番に保存されます。最初のパラメーターは0で、n番目のパラメーターはnです。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。