Mapper层代码
<!-- 调用存储过程返回结果集 -->
<select id="proTest" parameterType="java.util.Map" statementType="CALLABLE">
<![CDATA[
call PRO_TEST#{REBACK,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=resDeleteList})
]]>
</select>
@MapperScan
public interface ProMapper {
void proTest(Map<String, Object> param);
}
实体类
public class ProPojo {
private String tableName;
private Integer num;
public ProPojo() {
}
public ProPojo(String tableName, Integer num) {
this.tableName = tableName;
this.num = num;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
}
server实现层代码,用到了SpringMvc 注入Mapper接口
@Resource
ProMapper proMapper ;
public List<OrderDeletePojo> proTestImpl(Map<String, Object> obj) {
try {
Map<String, Object> param = new HashMap<>(1);
param.put("REBACK", OracleTypes.CURSOR);
proMapper.proTest(param);
List<ProPojo> depts = (List<ProPojo>) param.get("REBACK");
return depts;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
oracle存储过程
create or replace PROCEDURE PRO_TEST(REBACK out sys_refcursor)
Authid Current_User
AS
BEGIN
--返回结果集到java代码
open REBACK for SELECT 'abc' as TABLE_NAME,2 as NUM FROM dual;
END ;
最后自己写个接口调用server层方法即可,获取存储过程返回的结果集