sql >> Databasteknik >  >> RDS >> Oracle

Hur skriver man arrays till en Oracle 10g XE db med iBatis?

Jag har gjort med Mybatis3, borde vara liknande i den gamla iBatis-grejen. För att få JDBC-grejer, läs denna tråd . Det är en stor tråd, men den finns där. Leta efter "ArrayDescriptor".

I grund och botten måste du skriva en TypeHandler. I TypeHandler, anrop setArray. Borde vara något liknande i mybatis 3.x. Du arbetar med en lista, bara konvertera med toArray-metoden. Detta är ett exempel där parametern är en 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);
}

och kanske något liknande i 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);
}

Gör din du har byggt en typ, som det står i den tråden.

dvs.

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

Se sedan till att referera till typhanteraren i SQL-kartan.




  1. Hur skapar jag en kapslad funktion i PL/pgSQL?

  2. Oracle SQL - kan CASE användas i en kontrollbegränsning för att fastställa dataattribut?

  3. Hur man installerar MariaDB 10 på Debian och Ubuntu

  4. MySQL multipla index vs multi-kolumn index för sökning