sql >> Database >  >> RDS >> Oracle

Hoe schrijf je arrays naar een Oracle 10g XE db met iBatis?

Ik heb gedaan met Mybatis3, zou vergelijkbaar moeten zijn in de oude iBatis-dingen. Lees deze draad . Het is een grote draad, maar het is er. Zoek naar "ArrayDescriptor".

In principe moet je een TypeHandler schrijven. Roep in de TypeHandler setArray aan. Zou zoiets moeten zijn in mybatis 3.x. Je werkt met een lijst, converteer gewoon met de toArray-methode. Dit is een voorbeeld, waarbij de parameter een String [] is.

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

en misschien zoiets in 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);
}

Maak van je dat je een type hebt gebouwd, zoals in die thread staat.

d.w.z.

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

Zorg er dan in de SQL-map voor dat u naar de type-handler verwijst.




  1. ORAKEL. Authenticatie met LDAP retourneert altijd -16

  2. AWS Lambda - MySQL-caching

  3. E-mail verzenden vanuit MySQL 5.1

  4. Grote MySQL-tabellen