Ändra mapparen enligt följande
<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>
skapa en typ i SpInOut i din domänkatalog
public class SpInOut {
private Object objList;
//getter setting follows
}
Här är ett helt enkelt exempel
DB-sidan
Skapa anpassad typ
PACKAGE KP_EMP_PCK AS
type empType is ref cursor;
END KP_EMP_PCK;
Skapa en lagrad procedur
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;
Java-sidan
Skapa domänklass
public class User {
private String fName;
private String company;
private int age;
private int salary;
//getter Setter
}
Skapa domän för SpInOut
public class SpInOut {
private Object empList;
//getter setting follows
}
Mapper-gränssnitt
public interface EmployeeMapper {
void getEmployees(SpInOut param);
}
Mapper xml-fil
<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>
Och slutligen serviceklassen
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;
}
}