mybatis学習ノート3——マッピングファイルXXXXXmapper.xmlの追加削除
10818 ワード
ツールバーの
説明
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戻りタイプ完了