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

MyBatis का उपयोग करके Oracle संग्रहीत कार्यविधि में जावा वस्तुओं की सूची कैसे पास करें?

मैं नहीं बता सकता कि आप पहले से हैं या नहीं, लेकिन आपको Oracle ऑब्जेक्ट परिभाषित करने की आवश्यकता होगी।

CREATE OR REPLACE TYPE SCHEMA."YOUR_OBJECT" AS OBJECT
(
    field_one    varchar2(50),
    field_two    varchar2(100)
);
/
CREATE OR REPLACE TYPE SCHEMA."YOUR_OBJECT_ARRAY" AS TABLE OF YOUR_OBJECT;
/

फिर आप जावा ऑब्जेक्ट को Oracle ऑब्जेक्ट्स में मैप करने के लिए टाइप हैंडलर लिख सकते हैं।

import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;
....
public class YourTypeHandler implements TypeHandler
{
....
    public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException
    {
        List<YourObject> objects = (List<YourObject>) parameter;

        StructDescriptor structDescriptor = StructDescriptor.createDescriptor("YOUR_OBJECT", ps.getConnection());

        STRUCT[] structs = new STRUCT[objects.size()];
        for (int index = 0; index < objects.size(); index++)
        {
            YourObject pack = packs.get(index);
            Object[] params = new Object[2];
            params[0] = pack.getFieldOne();
            params[1] = pack.getFieldTwo();
            STRUCT struct = new STRUCT(structDescriptor, ps.getConnection(), params);
            structs[index] = struct;
        }

        ArrayDescriptor desc = ArrayDescriptor.createDescriptor("YOUR_OBJECT_ARRAY", ps.getConnection());
        ARRAY oracleArray = new ARRAY(desc, ps.getConnection(), structs);
        ps.setArray(i, oracleArray);
    }
}

फिर प्रक्रिया शुरू करें,

call your_proc
(
#{yourObjects, javaType=Object, jdbcType=ARRAY, jdbcTypeName=YOUR_OBJECT_ARRAY, mode=IN, typeHandler=YourObjectArrayTypeHandler}
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Verify_queryable_inventory लौटा ORA-20008:समय समाप्त हो गया

  2. Oracle VM Virtual Box के साथ एक वर्चुअल मशीन बनाना

  3. अमान्य पहचानकर्ता SQL

  4. Oracle 9i एक खाली स्ट्रिंग को NULL के रूप में क्यों मानता है?

  5. Oracle में FLOOR () फ़ंक्शन