mybatisシリーズ(二)--mybatisの動的sql

5396 ワード

まずmybatisのクエリー文を見てみましょう
parameterTypeは入力パラメータタイプであり、入力が基本データタイプである場合:

入力が集合である場合:
JAvaコード:
public List findStudentById(int[] i)

対応xml:

転送がリストの場合:
JAvaコード:
public List findStudentById(List i);

対応xml:

転送がmapの場合:
public List findStudentById(Map> map);

対応xml: 

まとめ:
1.parameterTypeは、javaの8種類のデータ型、配列(array)、集合(list)、およびMapを含むパラメータタイプです.
   parameterTypeが受け入れる配列の場合:array"
   parameterTypeが受け入れる集合の場合:collection="list"
   parameterTypeが受け入れるMapならcollection=「ids」、ここのidsはあなたがmapに入れたkeyを指します
2.parameterTypeは、パラメータタイプが配列(array)であり、集合(list)およびMapの場合、parameterTypeは書かなくてもよい.このように値も取れる.

ダイナミックsqlでよく使われるラベルを見てみましょう
  • if
  • where
  • choose(when,otherwise)
  • trim
  • set
  • foreach

  • まずifラベルの使用を見てみましょう.彼はパラメータの状況に応じて、動的にあなたが望んでいるsqlをつなぐのがとても便利です.

    where文の役割は主にmybaitsの知能的な判断がwhereを出力するかandを出力するかであり、条件判断の最初のものがandで間違いがあることを心配しないで、例を見てください.
     
      choose元素的作用就相当于JAVA中的switch语句,基本上跟JSTL中的choose的作用和用法是一样的,通常都是与when和otherwise搭配的。看如下一个例子: 
       
      


    trimラベルtrimラベル:prefix:接頭辞を上書きして内容を追加  
    suffix:接尾辞が上書きされ、コンテンツが追加されます. 
    prefixOverrides:プレフィックス判定の条件
    suffixOverrides:接尾辞判定の条件
    trim要素の主な機能は、自分が含むコンテンツの前にいくつかの接頭辞を付けることもできるし、その後にいくつかの接尾辞を付けることもできる.それに対応する属性はprefixとsuffixである.コンテンツを含む最初のいくつかのコンテンツを上書きすることもできる.すなわち無視することもできるし、最後のいくつかのコンテンツを上書きすることもできる.対応する属性はprefixOverridesとsuffixOverridesである.trimにはこのような機能なので、where要素の代わりにtrimを非常に簡単に利用することもできます.サンプルコードは以下の通りです.
     

    set要素は主に更新操作に用いられるが、その主な機能とwhere要素は実際には差が少なく、主に含まれる文の前にsetを出力し、含まれる文がカンマで終わるとカンマを無視し、setの条件が満たされていない場合、setに含まれる内容が空の場合、エラーが報告される.以下は例示的な世代である.コード:
      
        update t_student  
          
              
                id = #{id},  
              
              
                name = #{name},  
              
              
                age = #{age}  
              
          
        where id = #{id}  
     

    foreachは主にin条件の構築に用いられ、SQL文で1つのセットを反復することができます.
    foreach要素の属性は主にitem,index,collection,open,separator,closeである.
    itemは、コレクション内の各要素が反復されるときの別名を表します.
    indexは、反復中に反復するたびに反復する位置を表す名前を指定します.
    Openは、文が何で始まるかを示します.
    separatorは、反復するたびにどの記号を区切り記号とするかを表します.
    closeは何で終わるかを表します.
    foreachを使用する場合、最も重要なのはcollectionプロパティです.このプロパティは指定する必要がありますが、場合によっては値が異なります.主に3つのケースがあります.
  • 単一パラメータでパラメータタイプがリストである場合collection属性値はlist
  • である.
  • 単一パラメータでパラメータタイプがarray配列である場合、collectionの属性値はarray
  • である.
  • 入力されたパラメータが複数である場合、私たちはそれらを1つのMapにカプセル化する必要があります.もちろん、単一のパラメータもmapにカプセル化することができます.実際には、入力されたパラメータの場合、MyBatisの中でもそれを1つのMapにカプセル化します.mapのkeyはパラメータ名なので、このときcollection属性値は入力されたListまたはarrayオブジェクトが自分でカプセル化されます.入ったmapの中のkey
  • 以上の3つの場合の具体的な使い方は、開始コードが与えられています.