在mysql里面写了一个分页的存储过程,返回的是结果集和总的条数
CREATE DEFINER=`root`@`%` PROCEDURE `prc_page_result_zh`( OUT oRowsTotal INT, IN tablename VARCHAR(500), IN fieldname VARCHAR(500), IN pagesize INT, IN currpage INT, IN sCondition VARCHAR(500), IN order_field VARCHAR(100), IN asc_field INT, IN primary_field VARCHAR(1000)) BEGIN 其它代码略.... SET @iPageSize = pagesize; SET @sQuery = sSql; PREPARE stmt FROM @sQuery; EXECUTE stmt USING @iPageSize; SET oRowsTotal=FOUND_ROWS(); SET @sQuery=''; DEALLOCATE PREPARE stmt; END$$
请问在mybatis里面怎么配置和调用,刚接触mybatis,以前用hibernate和springjdbc都没有问题
请各位高手指教,感谢不尽.
难道没有人用过吗?应该是很常见的应用吧######
既然是分页你何必又要再用存储过程封装呢?直接在xml写sql把这样好扩展。
<select id="querySearchReverseList" statementType="CALLABLE" >
{call SP_OD_SEARCHREVERSE_BEGIN(#{pageNo},#{pageSize},#{status},#{result,mode=OUT,javaType=java.sql.ResultSet,jdbcType=CURSOR,resultMap=OrderInfoVo.querySearchReverseResult})}
</select>
原来我也用过,而且返回的是一个resultset
但是效率不行。特别是平凡查询的时候
######CREATE OR REPLACE PROCEDURE SP_OD_SEARCHREVERSE_BEGIN(v_pageNo number, --查询页码 v_pageSize number, --每页显示大小 v_status in VARCHAR2, --要获取的状态 v_resultCur out HF_CURSOR.CURSOR_TYPE) --获取记录集合 is /************************************************************ ************************************************************/ l_pageNo number(10); l_pageSize number(10); BEGIN if v_pageSize is null or v_pageSize = 0 then l_pageSize := 10; else l_pageSize := v_pageSize; end if; OPEN v_resultCur FOR select xxxx, xxxx, xxxx, xxxx, xxxx from (select r.xxx, f.xxx, f.xxx, f.xxx, f.xxx from OD_1 r, OD_2 f, OD_3 o, CH_4 c where r.xxx = f.xxx order by r.xxxx asc ) where rownum <= l_pageSize; --close v_resultCur; -- 不能关闭 END;
create or replace package HF_CURSOR is -- Author : ADMINISTRATOR -- Created : 2011-5-23 10:03:47 -- Purpose : FOR RETURN LIST -- Public type declarations TYPE CURSOR_TYPE IS REF CURSOR; --定义游标 end HF_CURSOR;######感谢你的回复,我已经解决了,和你的方法差不多
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。