Vorwort
MyBatis ist ein sehr häufig verwendeter Datenpersistenz -Framework in der Entwicklung von Web -Engineering. Durch dieses Framework können wir die Datenbank problemlos hinzufügen, löschen, ändern und durchsuchen. Wenn eine Datenbankverbindung Transaktionen begeht, verbraucht sie viele Ressourcen. Wenn mehr aktualisierte Daten eingefügt werden müssen und für jede Transaktion nur eine Daten eingereicht werden, wird eine enorme Verschwendung von Datenbankressourcen verursacht, was zu einem erheblichen Rückgang der Datenbankleistung und der Systemleistung führt.
In Bezug auf die Batch -Einführung von MyBatis handelt es sich bei den meisten Beispielen im Internet um MySQL -Datenbanken, und es gibt weniger Beispiele zu Oracle -Datenbanken. In diesem Artikel wird Ihnen die relevanten Inhalte über Oracle+MyBatis -Batch -Insertion, Update und Löschen vorgestellt. Ich werde unten nicht viel sagen. Schauen wir uns die detaillierte Einführung zusammen an.
1. Einfügen
(1) Die erste Methode: Verwenden Sie das Tag <Feach>, um virtuelle Daten über Union zu generieren, um die Stapelinsertion zu erreichen (verifiziert).
<Insert id = "InsertBatchLatContactactrecord" ParameterType = "java.util.map"> <selectKey resultType = "java.lang.long" KeyProperty = "dto.id" order = "vor"> SELEC SEQ_LA_TACT_RECORD.NEXTRECORD (IDECRORD (IDECTREI "(IDKEKRORD (IDECK) ASSKORD (IDKEY) ASSKORD (IDKEKRE) (IDKEKRET) (IDKEKRET) (IDECRECRET VERWEISUNG) (IDECRED) (IDKEKRET) (IDKEKRE, IDECTRAGE ABSCHNITT) (ADRECKE) ( contract_id , contact_add_name , contact_add_type , contact_add_phone , contact_add_home_address , contact_add_work , contact_add_work_address , create_by , create_time , modify_by , modify_time , validate_state , sys_source , isquery ) select seq_LA_T_CONTACT_RECORD.NEXTVAL,A.* von (<foreach collection = "list" item = "dto" index = "index" separator = "Union All"> select {dto.contractId, jdbctype = varchar},#{dto.contacteraddname, jdbctype = varchar},#{dto.contactttype, jdbcttype = varchar {dto.contactttype, jdbctype = varchar {dto.contactttype, jdbctype = varchar {dto.contactttype, jdbctype = varchar {dto.contactttype, jdbctype ,#{dto.contactAddPhone,jdbcType=VARCHAR} ,#{dto.contactAddHomeAddress,jdbcType=VARCHAR} ,#{dto.contactAddWork,jdbcType=VARCHAR} ,#{dto.contactAddWork,jdbcType=VARCHAR} ,#{dto.contactAddWorkAddress,jdbcType=VARCHAR} ,#{dto.createBy,jdbcType=DECIMAL} ,systimestamp ,#{dto.modifyBy,jdbcType=DECIMAL} ,#{dto.modifyTime,jdbcType=TIMESTAMP} ,'1' ,#{dto.sysSource, jdbctype = varchar},#{dto.isquery, jdbctype = varchar} von Dual </foreach>) a </Insert>Hinweis: Der Eintragsparameter muss eine Listensammlung sein, und es gibt keine Werte in der SQL -Anweisung.
(2) Die zweite Methode: Verwenden Sie gespeicherte Verfahren, um die Stapelinsertion zu realisieren (verifiziert).
<Insert ID = "InsertPlanRepaymentotherFebatch" ParameterType = "java.util.list"> begin <foreach collection = "list" item = "identil" index = "index"> in LB_T_PLAN_REPAYMENT_OTHERFEE (ID, Taste, Value, Dame, Contract_t_Plan_Repayment, Into_ID) (ID) (ID) (ID) (ID) (ID) (ID) (ID) (ID), Into_Name, Into_ID) values(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> Ende; </einfügen>Hinweis: Die eingehenden Parameter sind noch Listensammlungen, und es gibt Werte in SQL, die im Wesentlichen gespeicherte Verfahren zur Implementierung der Stapelinsertion verwendet.
(3) Die dritte Methode: Verwenden Sie spezielle SQL -Anweisungen (online suchen, darauf warten, überprüft zu werden)
Referenzblog: http://blog.csdn.net/w_y_t_/article/details/51416201
Die folgende SQL -Anweisung kann die Stapeleinfügung einer Erklärung implementieren!
Fügen Sie alle in userInfo (userID, Benutzername) -Werte ('1001', 'Tom') in userInfo (userId, Benutzername) ein, die ('1002', 'Black') in userInfo (userId, Benutzername) Werte ('1003', 'Jetty') in userInfo (userId, username) values ('1003', 'catty') ausgewählt wurden (userId, username) values ('1004', 'catty'). <einfügen id = "batchInsertuser" parameterType = "java.util.ArrayList"> Alle <foreach collection = "list" item = "userList" index = "index"> in userInfo (userId, userername) Werte (#{userList.userid},#{userlist.username}) </foreach> </foreach> </foreach> </foreach> </foreach> </foreach>HINWEIS: Wenn die Größe der Liste größer als 500 ist, wird sie fehlschlagen.
2. Update
(1) Die erste Methode: Verwenden Sie auch gespeicherte Prozeduren (online suchen, der Blog oben)
<update id = "batchupdateuser" parameterType = "java.util.ArrayList"> <foreach collection separator = ";"> userInfo t <Set> t.userid = #{userList.userid, jdbctype = varchar}, t.username = #{userList.username, jdbctype = varchar}, </set> wob(2) Die zweite Methode: Verwenden Sie die Bedingungen, um zu erreichen (verifiziert).
<update id = "updateBatchByListStat" parameterType = "java.util.map"> aktualisieren la_t_advfinished t1 set t1.list_stat = '07 ', t1.modify_time = systimestamp, wobei t1.id in (<foreach collection = "ids" ids "id") id "id" id "id" id "id" ’id" "id" "id" "id" "id" "id" "id" "id" "id" "id" "id" id "id" id "id" ’
Hinweis: Sie können auch die oder bedingte Implementierung verwenden, ähnlich wie die unten gelöschte SQL.
3.. Löschen
Ähnlich dem zweiten Update
<delete id = "DeleteEtRactions" parameterType = "java.util.list"> Aus Attraktionen löschen <Where> <foreach collection
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.