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.