序文
MyBatisは、Webエンジニアリング開発において非常に一般的に使用されるデータ永続性フレームワークです。このフレームワークを通じて、データベースを簡単に追加、削除、変更、検索できます。データベース接続がトランザクションをコミットすると、多くのリソースが消費されます。より更新されたデータを挿入する必要があり、トランザクションごとに1つのデータのみが送信される場合、データベースリソースの膨大な無駄が発生し、データベースのパフォーマンスとシステムパフォーマンスが大幅に減少します。
MyBatisのバッチ挿入に関して、インターネット上の例のほとんどはMySQLデータベースに関するものであり、Oracleデータベースに関する例は少ないです。この記事では、Oracle+MyBatisバッチの挿入、更新、削除に関する関連コンテンツを紹介します。以下ではあまり言いません。詳細な紹介を一緒に見てみましょう。
1。挿入
(1)最初の方法:<foreach>タグを使用して、ユニオンを介して仮想データを生成して、バッチ挿入を実現する(検証)
<ID = "INSERT INSERTBATCHLATCONTACTRECORD" PARAMETERTYPE = "JAVA.UTIL.MAP"> <SELECTKEY resultType = "java.lang.long" keyproperty = "dto.id" order = " Contract_id、contact_add_name、contact_add_type、contact_add_phone、contact_add_home_address、contact_add_work、contact_add_work_address、create_by、modify_by、modify_time、validate_state、sys_source、isquery <foreach collection = "list" item = "dto" index = "index" separator = "union all"> select#{dto.contractid、jdbctype = varchar}、#{dto.contacteraddname、jdbctype = varchar}、#{dto.contactadddtype、jdbctype = varchar} 、#{dto.contactaddphone、jdbctype = varchar}、#{dto.contactaddhomeaddress、jdbctype = varchar}、#{dto.contactype = varchar}、#{dto.contactaddwork、jdbctype = varchar} 、#{dto.contactadddworkaddress、jdbctype = varchar}、#{dto.createby、jdbctype = decimal}、systimestamp、#{dto.modifyby、jdbctype = decimal}、#{dto.modify = jdbctype = '1 timeStampe} 、#{dto.sysource、jdbctype = varchar}、#{dto.isquery、jdbctype = varchar} dual </foreach>)a </insert>注:エントリパラメーターはリストコレクションである必要があり、SQLステートメントに値はありません。
(2)2番目の方法:ストアドプロシージャを使用してバッチ挿入を実現する(確認)
<ID = "INSERTPLANREPAYMENTOTHERFEEBATCH" PARAMETERTYPE = "JAVA.UTIL.LIST"> begin <foreach collection = "list" item = "index =" index "> inserting lb_t_plan_repayment_otherfee(id、key、value、項、契約_id、有料値(seq_lb_t_plan_repay_otherfee.nextval、#{item.key、jdbctype = varchar}、#{item.value、jdbctype = varchar}、#{item.term、jdbctype = decimal}、#{item.contractid、jdbctype = varchar} 、#{item.payorder、jdbctype = decimal}、#{item.feename、jdbctype = varchar}、#{item.intoid、jdbctype = varchar}); </foreach> end; </insert>注:着信パラメーターはまだリストコレクションであり、SQLには値があります。これは、基本的にストアドプロシージャを使用してバッチ挿入を実装しています。
(3)3番目の方法:特別なSQLステートメントを使用してください(オンラインで検索、検証を待っています)
参照ブログ:http://blog.csdn.net/w_y_t_/article/details/51416201
次のSQLステートメントは、ステートメントのバッチ挿入を実装できます!
すべてをuserInfo(userid、username)values( '1001'、 'tom')にuserinfo(userid、username)values( '002'、 'black')にuserinfo(userid、username)values( 'jetty')に挿入します。
<ID = "batchinsertuser" parametertype = "java.util.arraylist">挿入<foreach collection = "list" item = "userlist" = "index"> "userId、username)値(#{userlist.userid}、#{userlist.userid}、注:リストのサイズが500を超えると、失敗します。
2。更新
(1)最初の方法:ストアドプロシージャも使用します(オンラインで検索、上記のブログ)
<update id = "batchupdateuser" parametertype = "java.util.arraylist"> <foreach collection = "list" item = "userlist" index = "index" open = "begin" close = "; end;" separator = ";"> usedupte userinfo t <set> t.userid =#{userlist.userid、jdbctype = varchar}、t.username = {userlist.username、jdbctype = varchar}、</set>ここで、t.userid =#{userlist.userid、jdbctipe = </foreck(2)2番目の方法:達成するための使用条件(検証)
<update id = "updatebatchbyliststat" parametertype = "java.util.map"> update la_t_advfinished t1 set t1.list_stat = '07 '、t1.modify_time = systimestampここで、t1.id in(<foreach collection = "ids" "" item = "id"> '$ {id}' </foreach>)</update>注:以下に削除されたSQLと同様に、または条件付き実装を使用することもできます。
3.削除
2番目のアップデートに似ています
<delete id = "deleteattractions" parametertype = "java.util.list"> delete from actortions <where> <foreach collection = "list" index = "item" item "open ="( "separator ="または "close =") "> id =#{item.id} </foreach> <要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。