Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để bạn ghi mảng vào db Oracle 10g XE bằng iBatis?

Tôi đã làm với Mybatis3, sẽ tương tự trong những thứ iBatis cũ. Để tải nội dung JDBC, hãy đọc chủ đề này . Đó là một chủ đề lớn, nhưng nó ở đó. Tìm kiếm "ArrayDescriptor".

Về cơ bản, bạn cần viết một TypeHandler. Trong TypeHandler, hãy gọi setArray. Sẽ là một cái gì đó như thế này trong mybatis 3.x. Bạn đang làm việc với một Danh sách, chỉ cần chuyển đổi bằng phương thức toArray. Đây là một ví dụ, trong đó tham số là một Chuỗi [].

import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;   
.....
public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException
{
 //null check?

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

và có thể tương tự như thế này trong ibatis,

public void setParameter(ParameterSetter setter, Object parameter) throws SQLException
{
    ArrayDescriptor desc = ArrayDescriptor.createDescriptor("STRARRAY", setter.getPreparedStatement().getConnection());
    ARRAY oracleArray = new ARRAY(desc, setter.getPreparedStatement().getConnection(), parameter);
    setter.setArray(oracleArray);
}

Làm cho bạn đã xây dựng một loại, giống như nó nói trong chuỗi đó.

tức là

CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (255)

Sau đó, trong bản đồ SQL, hãy đảm bảo tham chiếu trình xử lý kiểu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHÈN Hiệu suất - Bitmap so với B-Tree

  2. Làm mới / Cập nhật màn hình biểu mẫu trong Oracle D2k Forms 6i

  3. Làm cách nào để tăng hiệu suất cho INSERT hàng loạt vào bảng được liên kết ODBC trong Access?

  4. c # đọc Bảng SQL (với các ký tự đặc biệt) vào DataSet

  5. sql - ORA-00937:không phải là một hàm nhóm đơn