Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment écrivez-vous des tableaux dans une base de données Oracle 10g XE à l'aide d'iBatis ?

J'ai fait avec Mybatis3, devrait être similaire dans l'ancien truc iBatis. Pour obtenir les éléments JDBC, lisez ce fil . C'est un fil énorme, mais il est là. Recherchez "ArrayDescriptor".

Fondamentalement, vous devez écrire un TypeHandler. Dans TypeHandler, appelez setArray. Devrait être quelque chose comme ça dans mybatis 3.x. Vous travaillez avec une liste, convertissez simplement avec la méthode toArray. Ceci est un exemple, où le paramètre est une chaîne[].

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

et peut-être quelque chose comme ça dans 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);
}

Faites en sorte que vous ayez construit un type, comme il est dit dans ce fil.

c'est-à-dire

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

Ensuite, dans la carte SQL, assurez-vous de référencer le gestionnaire de type.