私はMybatis3を使用しましたが、古いiBatisのものと同様であるはずです。 JDBCのものを入手するには、このスレッド 。それは巨大なスレッドですが、そこにあります。 「ArrayDescriptor」を探します。
基本的に、TypeHandlerを作成する必要があります。 TypeHandlerで、setArrayを呼び出します。 mybatis3.xではこのようなものになるはずです。リストを操作するには、toArrayメソッドで変換するだけです。これは例であり、パラメーターは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);
}
おそらく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);
}
そのスレッドに書かれているように、タイプを作成しました。
つまり
CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (255)
次に、SQLマップで、必ずタイプハンドラーを参照してください。