सम्मिलित करें Mybatis के अंदर foreach बैच नहीं है , यह एक एकल (विशाल हो सकता है) SQL कथन है और जो कमियां लाता है:
- यहां Oracle जैसे कुछ डेटाबेस समर्थित नहीं हैं।
- प्रासंगिक मामलों में:डालने के लिए बड़ी संख्या में रिकॉर्ड होंगे और डेटाबेस कॉन्फ़िगर की गई सीमा (डिफ़ॉल्ट रूप से प्रति स्टेटमेंट लगभग 2000 पैरामीटर) हिट हो जाएगी, और अंततः संभवतः डीबी स्टैक त्रुटि यदि स्टेटमेंट स्वयं बहुत बड़ा हो जाता है।ली>
संग्रह पर पुनरावृत्ति mybatis XML में नहीं की जानी चाहिए। बस एक साधारण सम्मिलित करें निष्पादित करें Java Foreach . में कथन लूप।सबसे महत्वपूर्ण बात है सत्र निष्पादक प्रकार ।
SqlSession session = sessionFactory.openSession(ExecutorType.BATCH);
for (Model model : list) {
session.insert("insertStatement", model);
}
session.flushStatements();
मुझे लगता है कि यहां यह ExecutorType.REUSE . का उपयोग करने के लिए पर्याप्त होगा बिना फ्लशिंग स्टेटमेंट के।
डिफ़ॉल्ट के विपरीत ExecutorType.SIMPLE , विवरण एक बार तैयार किया जाएगा और प्रत्येक रिकॉर्ड को सम्मिलित करने के लिए निष्पादित किया जाएगा।