开发者社区> 问答> 正文

mybatis怎么配置和调用分页功能存储过程?:报错

在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都没有问题

请各位高手指教,感谢不尽.

展开
收起
kun坤 2020-06-06 17:41:10 471 0
1 条回答
写回答
取消 提交回答
  • 难道没有人用过吗?应该是很常见的应用吧######

    既然是分页你何必又要再用存储过程封装呢?直接在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;

    ######感谢你的回复,我已经解决了,和你的方法差不多
    2020-06-06 17:41:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多