คำนำ
MyBatis เป็นกรอบการคงอยู่ของข้อมูลที่ใช้กันทั่วไปในการพัฒนาวิศวกรรมเว็บ ผ่านเฟรมเวิร์กนี้เราสามารถเพิ่มลบแก้ไขและค้นหาฐานข้อมูลได้อย่างง่ายดาย เมื่อการเชื่อมต่อฐานข้อมูลดำเนินการธุรกรรมมันจะใช้ทรัพยากรจำนวนมาก หากจำเป็นต้องมีการแทรกข้อมูลที่ได้รับการปรับปรุงเพิ่มเติมและมีการส่งข้อมูลเพียงข้อมูลเดียวสำหรับการทำธุรกรรมแต่ละครั้งมันจะทำให้ทรัพยากรฐานข้อมูลเสียจำนวนมากส่งผลให้ประสิทธิภาพของฐานข้อมูลลดลงอย่างมีนัยสำคัญและประสิทธิภาพของระบบ
เกี่ยวกับการแทรกแบทช์ของ mybatis ตัวอย่างส่วนใหญ่บนอินเทอร์เน็ตเป็นข้อมูลเกี่ยวกับฐานข้อมูล MySQL และมีตัวอย่างน้อยกว่าเกี่ยวกับฐานข้อมูล Oracle บทความนี้จะแนะนำเนื้อหาที่เกี่ยวข้องเกี่ยวกับ Oracle+MyBatis Batch Insertion การอัปเดตและการลบ ฉันจะไม่พูดด้านล่างมากนักลองมาดูการแนะนำรายละเอียดด้วยกัน
1. แทรก
(1) วิธีแรก: ใช้แท็ก <Foreach> เพื่อสร้างข้อมูลเสมือนจริงผ่าน Union ทั้งหมดเพื่อให้ได้การแทรกแบบแบทช์ (ตรวจสอบแล้ว)
<insert id = "InsertBatchLatContacTrecord" พารามิเตอร์ "parameterType =" java.util.map "> <selectkey resultType =" java.lang.long "keyProperty =" dto.id "order =" ก่อน " LA_T_CONTACT_RECORD (ID, 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 seq_la_t_contact_record.nextval, a.* จาก (<foreach collection = "list" item = "dto" index = "index" ตัวคั่น = "Union All"> เลือก #{dto.contractid, jdbctype = varchar}, #{dto.contacteraddname ,#{dto.contactaddtype, jdbcType = varchar},#{dto.contactaddphone, jdbctype = varchar},#{dto.contactaddhomeaddress, jdbctype = varchar} ,#{dto.contactaddwork, jdbctype = varchar},#{dto.contactaddworkaddress, jdbctype = varchar},#{dto.createby, jdbctype = ทศนิยม}, systimestamp,# ,#{dto.modifytime, jdbctype = timestamp}, '1',#{dto.syssource, jdbctype = varchar},#{dto.isquery, jdbctype = varchar}หมายเหตุ: พารามิเตอร์รายการจะต้องเป็นรายการรวบรวมรายการและไม่มีค่าในคำสั่ง SQL;
(2) วิธีที่สอง: ใช้ขั้นตอนที่เก็บไว้เพื่อรับรู้การแทรกแบทช์ (ตรวจสอบแล้ว)
<insert id = "InsertPlanRepaymentotherFeebatch" parameterType = "java.util.list"> เริ่มต้น <foreach collection = "list" item = "item" index = "index"> แทรกลงใน lb_t_plan_repayment_otherfee ค่า (seq_lb_t_plan_repay_otherfee.nextval,#{item.key, jdbctype = varchar},#{item.value, jdbctype = varchar},#{item.term ,#{item.payorder, jdbcType = ทศนิยม},#{item.feename, jdbcType = varchar},#{item.intoid, jdbcType = varchar}); </foreach> สิ้นสุด; </แทรก>หมายเหตุ: พารามิเตอร์ที่เข้ามายังคงเป็นรายการคอลเลกชันและมีค่าใน SQL ซึ่งเป็นหลักโดยใช้ขั้นตอนที่เก็บไว้เพื่อใช้การแทรกแบบแบทช์
(3) วิธีที่สาม: ใช้คำสั่ง SQL พิเศษ (ค้นหาออนไลน์รอการตรวจสอบ)
บล็อกอ้างอิง: http://blog.csdn.net/w_y_t_/article/details/51416201
คำสั่ง SQL ต่อไปนี้สามารถใช้การแทรกชุดคำสั่ง!
แทรกทั้งหมดลงใน userInfo (userId, ชื่อผู้ใช้) ค่า ('1001', 'tom') ลงใน userInfo (userId, ชื่อผู้ใช้) ค่า ('1002', 'ดำ') เป็น userInfo (userId, ชื่อผู้ใช้) ('1003', 'jetty')<insert id = "batchinsertuser" parameterType = "java.util.arrayList"> แทรกทั้งหมด <foreach collection = "list" item = "userlist" index = "index"> ลงใน userInfo (userId, ชื่อผู้ใช้)
หมายเหตุ: เมื่อขนาดของรายการมากกว่า 500 มันจะล้มเหลว
2. อัปเดต
(1) วิธีแรก: ใช้ขั้นตอนที่เก็บไว้ (ค้นหาออนไลน์บล็อกด้านบน)
<update id = "batchUpDateUser" parameterType = "java.util.arrayList"> <foreach collection = "list" item = "userlist" index = "index" open = "start" close = "end;" ตัวคั่น = ";"> อัปเดต userinfo t <et> t.userid = #{userlist.userid, jdbctype = varchar}, t.username = #{userlist.username, jdbcType = varchar}, </set> </update>(2) วิธีที่สอง: ใช้เงื่อนไขเพื่อให้บรรลุ (ตรวจสอบแล้ว)
<update id = "UpdateBatchByListStat" parameterType = "java.util.map"> อัปเดต la_t_advfinished t1 set t1.list_stat = '07 ', t1.modify_time = systimestamp โดยที่ t1.id ใน (
หมายเหตุ: คุณยังสามารถใช้การใช้งานหรือมีเงื่อนไขคล้ายกับ SQL ที่ถูกลบไปด้านล่าง
3. ลบ
คล้ายกับการอัปเดตครั้งที่สอง
<delete id = "deleteTtractions" parameterType = "java.util.list"> ลบจากสถานที่ท่องเที่ยว <โดยที่> <foreach collection = "list" index = "index" item = "item" เปิด = "(" separator = "close =") "สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com