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