开发者社区 问答 正文

mybatis怎么配置和调用分页功能存储过程 - 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都没有问题

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

" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/56373c48f4254e338ec8302a763ed691.png)

展开
收起
montos 2020-05-30 10:44:48 696 分享 版权
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;

    ######感谢你的回复,我已经解决了,和你的方法差不多" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/d8b6bbdac42548c9a786e2635e500e2d.png)
    2020-05-30 10:44:58
    赞同 展开评论