Oracle
 sql >> база данни >  >> RDS >> Oracle

Предайте и връщайте персонализиран обект на масив в ibatis и оракул в java

Трябва да започнете с персонализиран екземпляр на TypeHandler . Бихме предпочели да внедрим по-простия TypeHandlerCallback , но в този сценарий се нуждаем от достъп до основната Connection .

public class ArrayTypeHandler implements TypeHandler {

    public void setParameter(PreparedStatement ps, int i, Object param, String jdbcType)
            throws SQLException {
        if (param == null) {
            ps.setNull(i, Types.ARRAY);
        } else {
            Connection conn = ps.getConnection();
            Array loc = conn.createArrayOf("myArrayType", (Object[]) param);
            ps.setArray(i, loc);
        }
    }

    public Object getResult(CallableStatement statement, int i)
            throws SQLException {
        return statement.getArray(i).getArray();
    }
    ...
}

След това, за да го свържете в конфигурацията на iBATIS:

<?xml version="1.0"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="arrayTest">

    <parameterMap id="storedprocParams" class="map">
        <parameter property="result" mode="OUT" jdbcType="ARRAY" typeHandler="ArrayTypeHandler"/>
        <parameter property="argument" mode="IN" jdbcType="ARRAY" typeHandler="ArrayTypeHandler"/>
    </parameterMap>

    <procedure id="storedproc" parameterMap="arrayTest.storedprocParams">
        {? = call My_Array_Function( ? )}
    </procedure>

</sqlMap>

Надявам се това да помогне!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване в Oracle Nested Table в Java

  2. Как да получите последния ред на Oracle таблица

  3. Функцията PL/SQL в Oracle не може да види DBMS_AQ

  4. Пример за демонстриране на уязвимостта на SQL инжекцията и нейното предотвратяване в Oracle

  5. SQL разработчик 4