Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

mybatis के साथ बैच डालने के लिए foreach का उपयोग करना

सम्मिलित करें 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 , विवरण एक बार तैयार किया जाएगा और प्रत्येक रिकॉर्ड को सम्मिलित करने के लिए निष्पादित किया जाएगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में N'String' बनाम U'String' अक्षर के बीच अंतर

  2. ओरेकल प्रक्रिया में एक स्ट्रिंग में फ़ंक्शन कॉल को आमंत्रित करना

  3. Oracle sql या pl/sql:पिछली पंक्ति मानों और दिनांक कॉलम के आधार पर गणना करें

  4. Oracle में JSON सरणी से विशिष्ट तत्व का चयन कैसे करें JSON CLOB प्रकार

  5. जहां शर्त में स्ट्रिंग मान स्वीकार नहीं किया जा रहा है