mybatis学習ノート3——マッピングファイルXXXXXmapper.xmlの追加削除

10818 ワード

  • cache–指定されたネーミングスペースのキャッシュ構成.
  • cache-ref–他のネーミングスペースキャッシュ構成への参照.
  • resultMap–データベース結果セットからオブジェクトをロードする方法を記述する最も複雑で強力な要素です.
  • parameterMap–廃棄されました!古いスタイルのパラメータマッピング.より良い方法は、将来削除される可能性のあるインラインパラメータを使用することです.この要素はドキュメントには表示されません.
  • sql–他の文で参照できる再使用可能な文ブロック.
  • insert–マッピング挿入文
  • update–マッピング更新文
  • delete–マッピング削除文
  • select–マッピングクエリ文
  • 1.select
    ツールバーの
    説明
    id
    ネーミングスペース内の一意の識別子は、この文を参照するために使用できます.
    parameterType
    この文に入力されるパラメータクラスの完全な限定名または別名.この属性はオプションです.MyBatisはタイププロセッサ(Type Handler)によって特定の入力文のパラメータを推定することができ、デフォルト値は未設定(unset)です.
    parameterMap
    これは外部parameterMapを参照する廃棄された方法である.インラインパラメータマッピングとparameterTypeプロパティを使用してください.
    resultType
    この文から返される所望のタイプのクラスの完全な限定名または別名.注意コレクションが返される場合は、コレクション自体ではなく、コレクションに含まれるタイプに設定する必要があります.resultTypeまたはresultMapは使用できますが、同時に使用することはできません.
    resultMap
    外部resultMapの名前付き参照.結果セットのマッピングはMyBatisの最も強力な特性であり、それを理解すれば、多くの複雑なマッピングの状況が解決されます.resultMapまたはresultTypeは使用できますが、同時に使用することはできません.
    flushCache
    これをtrueに設定すると、文が呼び出されると、ローカルキャッシュと2次キャッシュが空になり、デフォルト:falseになります.
    useCache
    これをtrueに設定すると、この文の結果が2次キャッシュにキャッシュされ、デフォルト値はselect要素に対してtrueになります.
    timeout
    この設定は、例外が投げ出される前に、ドライバがデータベースから要求結果を返すのを待つ秒数です.デフォルトは未設定(unset)(依存駆動)です.
    fetchSize
    これは、ドライバにバッチごとに返される結果の行数とこの設定値を等しくしようとするプロンプトです.デフォルトは未設定(unset)(依存駆動)です.
    statementType
    STATEMENT、PREPAREDまたはCALLABLEのいずれか.これにより、MyBatisはStatement、PreparedStatementまたはCallableStatement、デフォルト:PREPAREDをそれぞれ使用できます.
    resultSetType
    FORWARD_ONLY,SCROLL_SENSITIVE, SCROLL_INSENSITIVEまたはDEFAULT(unsetと等価)のいずれかで、デフォルト値はunset(依存駆動)です.
    databaseId
    データベース・ベンダーID(databaseIdProvider)が構成されている場合、MyBatisはdatabaseIdを持たない文または現在のdatabaseIdに一致する文をすべてロードします.持っている文も持っていない文もある場合は、持っていない文は無視されます.
    resultOrdered
    この設定は、ネスト結果select文にのみ適用されます.trueの場合、ネスト結果セットまたはグループが含まれていると仮定します.これにより、プライマリ結果行が返されると、前の結果セットへの参照は発生しません.これにより、ネストされた結果セットを取得する際にメモリが不足することはありません.デフォルト:false.
    resultSets
    この設定は、マルチ結果セットの場合にのみ適用されます.文の実行後に返される結果セットがリストされ、カンマで区切られた各結果セットの名前が表示されます.
    2.insert,update,delete
    ツールバーの
    説明
    id
    ネーミングスペース内の一意の識別子で、この文を表すことができます.
    parameterType
    文を入力するパラメータの完全な修飾クラス名または別名.この属性はオプションです.MyBatisはタイププロセッサによって特定の入力文のパラメータを推定することができ、デフォルト値は未設定(unset)です.
    parameterMap
    これは外部parameterMapを参照する廃棄された方法である.インラインパラメータマッピングとparameterTypeプロパティを使用してください.
    flushCache
    これをtrueに設定すると、文が呼び出されると、ローカルキャッシュと2次キャッシュが空になり、デフォルト値:true(insert、update、delete文の場合).
    timeout
    この設定は、例外が投げ出される前に、ドライバがデータベースから要求結果を返すのを待つ秒数です.デフォルトは未設定(unset)(依存駆動)です.
    statementType
    STATEMENT、PREPAREDまたはCALLABLEの1つ.これにより、MyBatisはStatement、PreparedStatementまたはCallableStatement、デフォルト:PREPAREDをそれぞれ使用できます.
    useGeneratedKeys
    (insertとupdateのみで使用)これにより、MyBatisはJDBCのgetGeneratedKeysメソッドを使用して、データベース内部で生成されたプライマリ・キー(MyやSQLサーバのようなリレーショナル・データベース管理システムの自動インクリメント・フィールド)を取り出し、デフォルト値falseを取得します.
    keyProperty
    (insertとupdateのみに使用されます)一意に1つのプロパティをマークします.MyBatisはgetGeneratedKeysの戻り値またはinsert文のselectKeysサブ要素でキー値を設定します.デフォルト:未設定(unset).複数の生成されたカラムを取得する場合は、カンマで区切られたプロパティ名のリストでも構いません.
    keyColumn
    (insertとupdateでのみ使用可能)生成されたキー値によってテーブル内のカラム名を設定します.この設定は、PostgreSQLのようなデータベースでのみ必要です.プライマリ・キー列がテーブル内の最初のカラムではない場合は設定する必要があります.複数の生成されたカラムを使用する場合は、カンマで区切られたプロパティ名のリストに設定することもできます.
    databaseId
    データベース・ベンダーID(databaseIdProvider)が構成されている場合、MyBatisはdatabaseIdを持たない文または現在のdatabaseIdに一致する文をすべてロードします.持っている文も持っていない文もある場合は、持っていない文は無視されます.
    2.1 Authorが配列または集合を入力するときに使用
    データベースがプライマリ・キーを自動的に生成するフィールド(MySQLやSQL Serverなど)をサポートしている場合は、useGeneratedKeys="true"を設定してkeyPropertyをターゲット・プロパティに設定すればOKです.
    データベースが複数行の挿入をサポートしている場合は、Author配列またはコレクションに転送し、自動的に生成されたプライマリ・キーを返すこともできます.
    
        
            
            
                select t_user.nextval from dual
            
            insert into user(user_id, username, age)
            values(#{userId}, #{userName}, #{age})
            
        
    
    
    
    
      insert into Author (username, password, email, bio) values
      
        (#{item.username}, #{item.password}, #{item.email}, #{item.bio})
      
    

    2.2 selectKeyを使用すると、selectKey要素の文はinsert、update、deleteの前に実行されますが、select文では使用できません.
    3.文字列置換
    文字列を入力するとデータがエスケープされず、#{}を使用するとエラーが発生します.これは${}です.これにより、MyBatisは文字列を変更したり、エスケープしたりしません.
    ${}は直接置き換えられ、#{}は使用されますか?プリプロセッシング
     
    4.resultMapの複雑なクエリ*
    association単一オブジェクト
    4.1マッピングファイルとクラスの関連付け-最初のカスケード属性パッケージ(テーブル関連付け)はorgsssにある.orgNameで
    //User 
    private String userId;
    private String username;
    private Org orgsss;//   
    //Org 
    private String orgId;
    private String orgName;
      
        
        
        
        
      
    SQL   select * from t_user u INNER JOIN t_org o IN u.org_id = o.org_id where u.id = #{id}

    4.2マッピング・ファイルとクラスの関連付け-強化版associationを使用して単一オブジェクト・カプセル化ルール(ネスト)SQL文を定義するには、すべてを書く必要があります.
    
        
        
        
        
          
          
        
    
    SQL   select * from t_user u INNER JOIN t_org o IN u.org_id = o.org_id where u.id = #{id}
       {userId: , username: , orgsss:{     }}
    

    4.3マッピングファイルとマッピングファイルの関連association
      
        
        
        
        
        
      
    SQL  (   )     select * from t_user u where u.id = #{id}
                         select * from t_org o where o.id = #{u.id}
       {userId: , username: , orgsss:{     }}

    4.4 associationの遅延ロード構成(config.xmlを構成するだけでよい)(4.3参照)
    デフォルトはtrueですが、前のバージョンのデフォルト値がfalseである可能性があるため、セキュリティのためにもう一度定義します.
        ,                   。   ,         (   lazyLoadTriggerMethods)。
    
        
        
    

    Collectionコレクション(コレクションに複数のオブジェクトがあります)
    4.5 collection関連コレクションクエリー(ofTypeオブジェクトクラス)
    
      
        
        
        
        
          
          
        
      
    SQL   select * from t_user u INNER JOIN t_org o IN u.org_id = o.org_id where u.id = #{id}
       {userId: , username: , orgsss:[{  },{  }]}

     
    4.6 collectionステップクエリ()
      
      
        
        
        
        
          
          
        
      
    
    SQL  (   )     select * from t_user u where u.id = #{id}
                         select * from t_org o where o.id = #{u.id}
       {userId: , username: , orgsss:[{  },{  }]}

    以下を参照してください.https://blog.csdn.net/qq_16946803/article/details/90266442
    4.7 collectionマルチパラメータ転送
    
        

    collectionラベルのfetchType遅延ロード(4.4と合わせて、プロファイルに遅延ロードが設定されていても、collectionのfetchTypeが設定されていれば優先度が高い)は、もちろんassociationラベルにもfetchTypeパラメータがあります
    FetchTypeのパラメータ
    eager:今すぐ
    Lazy:遅延
    4.8 discriminator識別器
    
        
           
             
               
             
           
    
          
            
            
            
          
        

     
    resultMap戻りタイプ完了