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

Oracle के लिए MyBatis बैच इन्सर्ट/अपडेट करें

स्वीकृत उत्तर बैच संचालन को संभालने का अनुशंसित तरीका नहीं है। यह सही बैच विवरण नहीं दिखाता है क्योंकि सत्र खोलते समय बैच निष्पादक मोड का उपयोग किया जाना चाहिए। यह पोस्ट देखें जिसमें एक कोड योगदानकर्ता ने सिफारिश की थी कि बैच अपडेट (या सम्मिलित) का उचित तरीका बैच मोड में एक सत्र खोलना और एक रिकॉर्ड के लिए बार-बार कॉल अपडेट (या सम्मिलित) करना है।

यहाँ मेरे लिए क्या काम करता है:

public void updateRecords(final List<GisObject> objectsToUpdate) {
    final SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession(ExecutorType.BATCH);
    try {
        final GisObjectMapper mapper = sqlSession.getMapper(GisObjectMapper.class);
        for (final GisObject gisObject : objectsToUpdate) {
            mapper.updateRecord(gisObject);
        }
        sqlSession.commit();
    } finally {
        sqlSession.close();
    }
}

अपने अपडेट/सम्मिलन में foreach का उपयोग न करें और सुनिश्चित करें कि यह केवल एक रिकॉर्ड को अपडेट/सम्मिलित करता है। मैं स्वीकृत उत्तर (अमान्य चरित्र, कथन समाप्त नहीं हुआ, आदि) के अनुसार ऐसा करके असफल ओरेकल त्रुटियों में भाग रहा था। जैसा कि लिंक की गई पोस्ट इंगित करती है, स्वीकृत उत्तर में दिखाया गया अद्यतन (या सम्मिलित) वास्तव में केवल एक विशाल sql कथन है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वी$एसक्यूएल_SHARED_CURSOR TOP_LEVEL_RPI_CURSOR

  2. जावा में पीएल/एसक्यूएल फ़ंक्शन को कॉल करें?

  3. Oracle डेटाबेस में सभी कार्यों की सूची बनाएं

  4. ओरेकल में अलग CURRENT_TIMESTAMP और SYSDATE

  5. ADO.NET/C# के माध्यम से Oracle (ODP.NET 10g) में ऐरे/टेबल पैरामीटर का उपयोग कैसे करें?