Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como você escreve arrays em um banco de dados Oracle 10g XE usando iBatis?


Eu fiz com o Mybatis3, deve ser parecido com as coisas antigas do iBatis. Para obter o material JDBC, leia este tópico . É um tópico enorme, mas existe. Procure por "ArrayDescriptor".

Basicamente, você precisa escrever um TypeHandler. No TypeHandler, chame setArray. Deve ser algo assim no mybatis 3.x. Você está trabalhando com uma List, basta converter com o método toArray. Este é um exemplo, onde o parâmetro é um 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);
}

e talvez algo assim em 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);
}

Faça o seu você construiu um tipo, como diz nesse tópico.

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

Em seguida, no mapa SQL, certifique-se de fazer referência ao manipulador de tipo.