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