sql >> Databáze >  >> RDS >> Oracle

Jak zapisujete pole do Oracle 10g XE db pomocí iBatis?

Udělal jsem s Mybatis3, měl by být podobný ve starých věcech iBatis. Chcete-li získat obsah JDBC, přečtěte si toto vlákno . Je to velké vlákno, ale je tam. Hledejte "ArrayDescriptor".

V zásadě musíte napsat TypeHandler. V TypeHandler zavolejte setArray. Něco takového by mělo být v mybatis 3.x. Vaše práce se seznamem stačí převést metodou toArray. Toto je příklad, kde je parametrem String[].

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);
}

a možná něco takového v 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);
}

Vytvořte si typ, který jste vytvořili, jak je uvedeno v tomto vlákně.

tj.

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

Poté se v mapě SQL ujistěte, že odkazujete na popisovač typu.




  1. Jak vybrat položky, pokud jich je v Laravel Query více než 3

  2. Najděte jiné znaky než ASCII ve sloupcích varchar pomocí SQL Server

  3. Vynutit INSERT pouze prostřednictvím uložené procedury

  4. použijte WHERE CLAUSE pro vyhledávání dat od data A do data B