Kata pengantar
Mybatis adalah kerangka kerja kegigihan data yang sangat umum digunakan dalam pengembangan teknik web. Melalui kerangka kerja ini, kami dapat dengan mudah menambahkan, menghapus, memodifikasi, dan mencari database. Ketika koneksi database melakukan transaksi, ia mengkonsumsi banyak sumber daya. Jika lebih banyak data yang diperbarui perlu dimasukkan dan hanya satu data yang dikirimkan untuk setiap transaksi, itu akan menyebabkan pemborosan sumber daya basis data yang sangat besar, menghasilkan penurunan kinerja database yang signifikan dan kinerja sistem.
Mengenai penyisipan batch mybatis, sebagian besar contoh di internet adalah tentang database MySQL, dan ada lebih sedikit contoh tentang database Oracle. Artikel ini akan memperkenalkan kepada Anda konten yang relevan tentang penyisipan, pembaruan, dan penghapusan Batch Oracle+Mybatis. Saya tidak akan mengatakan banyak hal di bawah ini, mari kita lihat perkenalan terperinci bersama.
1. Masukkan
(1) Metode pertama: Gunakan tag <foreach> untuk menghasilkan data virtual melalui Union All untuk mencapai penyisipan batch (diverifikasi)
<insert id = "insertBatchlatContactrecord" parameterType = "java.util.map"> <sfectKey resultType = "java.lang.long" keyproperty = "dto.id" order = "sebelum"> Pilih seq_la_t_contact_record.id "ID dari doBoord (IDOCCECKY> PILIT_COCKED INDOOCTRETY/INICOCT.ICOCKE. 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). dari (<freeach collection = "list" item = "dto" index = "index" pemisah = "union all"> pilih#{dto.contractractid, jdbctype = varchar},#{dto.contacteraddname, jdbctype = varchar},#{dto.contactAddType, jdbctype = varchar} ,#{dto.contactAddphone, jdbctype = varchar},#{dto.contactaddhomeaddress, jdbctype = varchar},#{dto.contactAddwork, 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 = decimal},#{dto.modifytime, jdbctype = decimal},#{dto.modifytime, jdbctype = decimal} ,#{dto.syssource, jdbctype = varchar},#{dto.isQuery, jdbctype = varchar} dari dual </tandingeach>) a </sert>Catatan: Parameter entri harus berupa koleksi daftar, dan tidak ada nilai dalam pernyataan SQL;
(2) Metode kedua: Gunakan prosedur tersimpan untuk mewujudkan penyisipan batch (diverifikasi)
<insert id="insertPlanRepaymentOtherfeeBatch" parameterType="java.util.List"> begin <foreach collection="list" item="item" index="index"> insert into lb_t_plan_repayment_otherfee ( id , key , value , term , contract_id, PAY_ORDER, FEE_NAME, INTO_ID ) nilai (seq_lb_t_plan_repay_otherfee.nextval,#{item.key, jdbctype = varchar},#{item.value, jdbctype = varchar},#{item.term, jdbctype = decimal},#{item.contractractid, jdbctype = decimal},#{item.contractractid, jdbctype = decimal},#{item.contractractid, jdbctype = decimal},#{item.contractractid, jdbctype = decimal},#{item.contractractid, jdbctype = varChar} ,#{item.payorder, jdbctype = decimal},#{item.feename, jdbctype = varchar},#{item.intoid, jdbctype = varchar}); </foreach> end; </sert>Catatan: Parameter yang masuk masih ada daftar koleksi, dan ada nilai dalam SQL, yang pada dasarnya menggunakan prosedur tersimpan untuk mengimplementasikan penyisipan batch;
(3) Metode ketiga: Gunakan pernyataan SQL khusus (mencari online, menunggu untuk diverifikasi)
Blog Referensi: http://blog.csdn.net/w_y_t_/article/details/51416201
Pernyataan SQL berikut dapat menerapkan penyisipan batch pernyataan!
Masukkan semua ke dalam nilai userInfo (userid, username) ('1001', 'tom') ke nilainya userInfo (userid, username) ('1002', 'hitam') menjadi nilai userInfo (userid, username) ('1003', 'jetty') ke dalam userInfo (userid, nilai username) ('1003', 'jetty') ke UserInfo (userid, nilai username) ('1003', 'Jetty') ke UserInfo (userId, nilai username) ('1004', ' <insert id="batchInsertUser" parameterType="java.util.ArrayList"> INSERT ALL <foreach collection="list" item="userList" index="index"> INTO USERINFO(userid,username) VALUES(#{userList.userid},#{userList.username}) </foreach> SELECT 1 FROM DUAL </insert>Catatan: Ketika ukuran daftar lebih besar dari 500, itu akan gagal;
2. Pembaruan
(1) Metode pertama: juga menggunakan prosedur tersimpan (mencari online, blog di atas)
<Perbarui id = "BatchupDateUser" ParameTerType = "java.util.arraylist"> <foreach collection = "list" item = "userlist" index = "index" open = "start" close = "; end;" pemisah = ";"> Perbarui userInfo t <set> t.userId = #{userlist.userid, jdbctype = varchar}, t.username = #{userlist.username, jdbctype = varchar}, </set> di mana t.userid = #{{uSerlist.userid, jd {jd {jd {uSerList = #{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ #,(2) Metode kedua: kondisi penggunaan untuk mencapai (diverifikasi)
<update id = "updateBatchByListStat" parameTerType = "java.util.map"> update la_t_advfinished t1 set t1.list_stat = '07 ', t1.modify_time = Systimestamp di mana t1.id in (<foreach collection = "id" ID ",", ",", ",", "," ID "," ID "," ID "," ID "," ID ",", ",", ",", ",", ",", ",", "ID", "ID", "ID", "ID", ",", "," ID "," Ids = "," Ids = "," ID ",", "ID", "," ID ",", "," IDS = "," ID "," IDS = "," IDS = "," IDS = "," IDS = "," IDS = ",", "
Catatan: Anda juga dapat menggunakan implementasi atau bersyarat, mirip dengan SQL yang dihapus di bawah ini;
3. Hapus
Mirip dengan pembaruan kedua
<delete id = "deleteattraction" parameTerType = "java.util.list"> hapus dari atraksi <where> <freeach collection = "list" index = "index" item = "item" open = "(" separator = "atau" close = ")"> ID =#{item.id} </foreach> </where> delete>Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.