私たちはしばしば、プロジェクトでMyBatisのを使用していますが、どのように我々柔軟なアプリケーションMyBatisのは、私たちのプログラムより優れたパフォーマンスを作ることができますか?次に我々は、これらの点を見てみましょう。
図1に示すように、一括操作
私たちはしばしば大量のデータの操作が発生し、一般的に、我々はの使用をリサイクルすることを考えると、1ずつ処理しました。しかし、このようなプロセスは、非常に効率的ではありません。MyBatisのは、私たちは見てみましょう、一括操作の方法を提供してくれます。
//一括挿入
<挿入ID = "addTrainRecordBatch" のParameterType = "java.util.Listに">
t_train_record(add_time、EMP_ID、ACTIVITY_ID、フラグ)に挿入
値
<foreachのコレクション= "リスト" 項目= "項目" インデックス= "インデックス" セパレータ= "">
(#{item.addTime}、{#item.empId}、{#item.activityId}、{#item.flag})
</ foreachの>
</挿入>
foreach解決
foreach要素は、主に近い項目、インデックス、コレクション、オープン、セパレータ、属性。
各項目は、エイリアスの繰り返しの組の要素を表します
反復プロセスを表現するための名前インデックスを指定し、位置の各反復、
open文は何の開始を示すために、
各反復の間のセパレータは、区切り文字としてどのシンボルを表し
それは、どのような終わりに近い表し
注コレクション
、最も重要なのforeachのを使用して、ほとんどのエラーが発生しやすいが、コレクションのプロパティである場合は、指定する必要があるが、異なる状況下では、プロパティの値が同じではありませんが、およそ3例があります。
1.一つのパラメータは、パラメータの種類に渡された場合は、リストと時間で、コレクションの属性値リスト
2.一つのパラメータが渡され、時間パラメータが配列型の配列、コレクション属性値の配列ですされている場合
3.渡された引数が多い場合、我々はもちろん、それはまた、単一のパラメータマップとしてパッケージ化することができ、地図にそれらをパッケージ化する必要があります
2、このresultMapとresultTypeと
ここでは、彼が混入するために誰かを防ぐために、2つの間のこの関係を説明したいです。
(> DBとモデルKEY-間で予め定義されたほのめかすの値の関係)resultTypeとは、(我々のモデル・オブジェクト・エンティティに対応)戻りのタイプの直接表現であり、このresultMapは、このresultMap外部参照であります
コントラスト
①タイプ属性がresultTypeとを戻すために設けられている場合、MyBatisのマップはキーと値のペアの内側に撮影されますが、指定されたターゲットresultTypeと対応する属性に割り当てます。だから、実際には戻りのタイプごとにMyBatisのクエリマッピングは、タイプ属性が指定された属性オブジェクトresultTypeとに対応する値を割り当てるresultTypeと復帰時間、自動MyBatisのが設けられている場合にのみ、このresultMapあります。
②戻り値の型が提供されるとこのresultMap時間は、地図だけでなく、ドメインモデルを表していないので、私たちはしばしば、複雑なクエリで有用な役割でそれに対応するオブジェクトの中に、さらに自分自身を配置する必要があります。
3、軽量なデータクエリ
我々はを参照している場合、我々は最初のマルチテーブルは何が頭に浮かぶ照会するとき?NATURAL結合問合せは、内側と外側は、もはやいくつかのクエリを詳しく説明するが接続された結合に分かれています。
我々は、すべてのクエリの効率よりも、接続クエリは高いですが、私たちは、インターネット企業であれば、ことに留意すべきで、より高い性能の追求というサブライブラリーサブテーブルを使用することを知っているので、我々は、接続クエリが多数に分割されていることを確認する必要があります単純なクエリ、比較的良好でこの時間。
// EN
uは、内側u.userId = r.userIdにRとしてROLに参加するように、ユーザーから名前、年齢、userRowを選択
//(複数の文)で
名前、年齢を選択し、ユーザーからのuserIdでuserRowは(userRow、ROLからのuserIdを選択します)
要約:
各ツールは、当社の実際の状況は、柔軟なアプリケーションを必要に応じて、彼の保護観察の範囲を持っています。そして、すべての質問は、多くの方法が、我々はそれらの、簡単で利用可能かつ効率的な方法についての詳細を考える必要があります。絶えず進歩するためには、思考。
ます。https://juejin.im/post/5d072a8451882548ac439c2bで再現