Zrobiłem z Mybatis3, powinien być podobny w starym iBatis. Aby uzyskać materiały JDBC, przeczytaj ten wątek . To ogromny wątek, ale jest. Poszukaj „ArrayDescriptor”.
Zasadniczo musisz napisać TypeHandler. W TypeHandler wywołaj setArray. Powinno być coś takiego w mybatis 3.x. Pracujesz z Listą, po prostu przekonwertuj za pomocą metody toArray. To jest przykład, w którym parametrem jest 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że coś takiego w 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);
}
Spraw, aby Twój typ został zbudowany, tak jak jest napisane w tym wątku.
tj.
CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (255)
Następnie na mapie SQL upewnij się, że odwołujesz się do obsługi typu.