Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pemetaan MyBatis untuk mengambil Daftar Jenis Catatan Kustom di Oracle

Ubah mapper sebagai berikut

<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>

buat tipe di SpInOut di direktori domain Anda

public class SpInOut {

    private Object objList;
   //getter setting follows
}

Berikut adalah contoh sederhana yang lengkap

Sisi DB

Buat jenis khusus

PACKAGE KP_EMP_PCK AS

  type empType is ref cursor;

END KP_EMP_PCK;

Buat prosedur tersimpan

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;

Sisi Java

Buat kelas domain

public class User {

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

}

Buat domain untuk SpInOut

public class SpInOut {

        private Object empList;
       //getter setting follows
    }

Antarmuka pembuat peta

public interface EmployeeMapper {

    void getEmployees(SpInOut param);

}

File xml mapper

<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>

Dan akhirnya kelas layanan

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. Mengapa saya mendapatkan kesalahan ini? Tidak dapat menyisipkan nol ke dalam 'VALUE.VALUE_TX'

  2. Permintaan kustom pagination mengambil kesalahan N baris pertama

  3. Mengapa saya mendapatkan ORA-01401:nilai yang dimasukkan terlalu besar untuk kolom - ketika saya tidak memasukkan?

  4. Bagaimana cara memasukkan catatan ke dalam variabel dari cte di Oracle?

  5. Oracle (0x80004005)ORA-12154:TNS:tidak dapat menyelesaikan pengidentifikasi koneksi