sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo se escriben arreglos en una base de datos Oracle 10g XE usando iBatis?

Lo he hecho con Mybatis3, debería ser similar a las cosas antiguas de iBatis. Para obtener las cosas de JDBC, lea este hilo . Es un hilo enorme, pero está ahí. Busque "ArrayDescriptor".

Básicamente, necesitas escribir un TypeHandler. En TypeHandler, llama a setArray. Debería ser algo como esto en mybatis 3.x. Está trabajando con una Lista, simplemente convierta con el método toArray. Este es un ejemplo, donde el parámetro es un 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);
}

y tal vez algo así en 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);
}

Haz que tu hayas construido un tipo, como dice en ese hilo.

es decir,

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

Luego, en el mapa SQL, asegúrese de hacer referencia al controlador de tipos.