ステートメントのParameterTypeプロパティでMyBatisのマッピングは、入力パラメータの種類を開発します。しかし、のParameterTypeプロパティは、パラメータを1つしか書き込むことができますので、私たちは声明の中で渡された複数のパラメータをマップしたい場合は、次に我々は、マップされたステートメントを渡すためのHashMap、HashMapのにすべての入力パラメータを置くことができます。
実際には、地図、地図に保存され、その後、パラメータのSQLステートメントとして渡されたパラメータの数は、mybaitsは、各パラメータを取得するために、地図のコレクションを解析した後に受け取りました。
例えば:
< 選択ID = "searchCourses" のParameterType = "マップ" このresultMap = "CourseResult" > コースSELECT * FROM TUTOR_ID =#{} tutorId AND NAME LIKE#{} courseName </ 選択>
マッピングインターフェイス:
パブリック インターフェイスDynamicSqlMapper { 一覧 <コース> searchCourses(地図<文字列、オブジェクト> マップ); }
試験方法:
@Test 公共 ボイドtest_searchCourses1(){ SQLSESSION SQLSESSION = nullを。 してみてください{ SQLSESSION = MyBatisSqlSessionFactory.openSession()。 DynamicSqlMapperマッパー = sqlSession.getMapper(DynamicSqlMapper。クラス)。 地図 <文字列、オブジェクト>マップ= 新しい HashMapの<文字列、オブジェクト> (); map.put( "tutorId"、1 ); map.put( "courseName"、 "%ののJava%" ); 一覧 <コース>コース= mapper.searchCourses(マップ); courses.forEach(のSystem.out ::のprintln)。 } キャッチ(例外e){ e.printStackTrace(); } }
MyBatisの別の方法は、また、マップ文に渡される入力パラメータを複数設けられています。
:たとえば、私たちは与えられた名前と電子メール情報を通じて、学生の情報を検索したい場合は、クエリインターフェイスは次のように定義される
ようにマッパー方法については、MyBatisのデフォルトパラメータからのparam1、PARAM2 ...という名前のメソッドに左から右へ、そして。
パブリック インターフェイスStudentMapper { 一覧 <学生> findAllStudentsByNameEmail(文字列名、文字列電子メール)。 }
MyBatisのマッピング文に渡される入力パラメータの複数をサポートし、フォーム#{PARAM}の構文でそれらを参照してください。
< 選択し、ID = "findAllStudentsByNameEmail" このresultMap = "StudentResult" > 学生からstud_id、名前、メールアドレス、電話番号を選択します どこ 名前=#{} PARAM1 そして メール=#{} PARAM2 </ 選択>
ここで、#{PARAM1}は最初のパラメータ名を指し、それ#{PARAM2}パラメーターは、第二の電子メールを参照します。