Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Mapowanie MyBatis do pobierania listy niestandardowych typów rekordów w Oracle

Zmień program mapujący w następujący sposób

<resultMap type="detail" id="myResultMap"  >
        <result property="objectNamee" column="P_OBJECT_NAME" />
        <result property="objectStatus" column="p_object_status" />
</resultMap>

<select id="getLearnerMap" parameterType="spInOut" statementType="CALLABLE">

 {call p1.data_collection_append(#{objList, jdbcType=CURSOR, mode=OUT, resultMap=myResultMap, javaType=java.sql.ResultSet})}

</select>

utwórz typ w SpInOut w swoim katalogu domeny

public class SpInOut {

    private Object objList;
   //getter setting follows
}

Oto kompletny prosty przykład

Strona bazy danych

Utwórz typ niestandardowy

PACKAGE KP_EMP_PCK AS

  type empType is ref cursor;

END KP_EMP_PCK;

Utwórz procedurę składowaną

create or replace PROCEDURE KPLISTEMP
( empList OUT kp_emp_pck.empType
) AS
BEGIN
  open empList for select empid, fname, lname,address from kpemployee order by fname;
END KPLISTEMP;

Strona Javy

Utwórz klasę domeny

public class User {

    private String fName;
    private String company;
    private int age;
    private int salary;
    //getter Setter

}

Utwórz domenę dla SpInOut

public class SpInOut {

        private Object empList;
       //getter setting follows
    }

Interfejs mapera

public interface EmployeeMapper {

    void getEmployees(SpInOut param);

}

Plik XML Mappera

<mapper namespace="com.kp.swasthik.db.oracle.persistence.EmployeeMapper">

    <resultMap type="employee" id="empResultMap"  >
        <id property="empId" column="EMPID" />
        <result property="fName" column="FNAME" />
        <result property="lName" column="LNAME" />
        <result property="address" column="ADDRESS"  />
    </resultMap>

    <select id="getEmployees"  statementType="CALLABLE" parameterType="spInOut" >
        {call kplistemp(#{empList, jdbcType=CURSOR, mode=OUT, resultMap=empResultMap, javaType=java.sql.ResultSet})}
    </select>
</mapper>

I wreszcie klasa usług

public class EmployeeServiceImpl implements EmployeeService {

    @Autowired
    EmployeeMapper mapper;

    @Override
    public List<Employee> getEmps() {
        try{
            SpInOut data= new SpInOut();
            mapper.getEmployees(data);
            return (List<Employee>) data.getEmpList();
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }

}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dwa lewe sprzężenia zewnętrzne nie działają Oracle sql

  2. Jak wywołać funkcję lub procedurę Oracle za pomocą Hibernate (EntityManager) lub JPA?

  3. Instrukcja Oracle Sql dla unikalnego znacznika czasu dla każdego wiersza

  4. Oblicz różnicę roku od daty w Oracle

  5. Jak utworzyć zadanie ADDM i sprawdzić jego raport