ITPub博客

首页 > 数据库 > 国内数据库 > java使用mybatis 调用存储过程返回一个游标结果集

java使用mybatis 调用存储过程返回一个游标结果集

原创 国内数据库 作者:瀚高PG实验室 时间:2022-03-25 17:27:50 0 删除 编辑

瀚高数据库

目录

环境

文档用途

详细信息


环境

系统平台: IBM:Linux on System z Red Hat Enterprise Linux 7

版本: 6.0,4.5



文档用途


mybatis调用存储过程返回游标接收结果集。




详细信息


1.service实现类

    
    @Override
    
    @Transactional
    
    
    public List<HighgoFunOneRefcursorEntity> getOneRefcursor(Integer id) {
    
    
    
       HashMap<String, Object> map = new HashMap<String, Object>();     map.put( "id", id);    highgoFunOneRefcursorDao.getOneRefcursor( map);    List<HighgoFunOneRefcursorEntity> list = (List<HighgoFunOneRefcursorEntity>) map.get( "result");
        return list; }


    2.dao层

      
      
      @Mapper
      
      
      public 
      interface HighgoProOneRefcursorDao 
      extends BaseMapper<HighgoProOneRefcursorEntity> {
      
          ArrayList<Map<
      String, 
      Object>> getProOneRefcursor(HashMap map);
      
      
      
      }


      3.mapper

        
        
        <?xml version="1.0" encoding="UTF-8"?>
        
        
        <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        
        
        
        < mapper namespace= "com.database.mybatisplus.modules.demo.dao.HighgoProOneRefcursorDao">
          <!-- 可根据自己的需求,是否要使用 -->     < resultMap type= "com.database.mybatisplus.modules.demo.entity.HighgoProOneRefcursorEntity" id= "highgoProOneRefcursorMap">         < result property= "hanzi" column= "hanzi"/>         < result property= "quanpin" column= "quanpin"/>         < result property= "szm" column= "szm"/>         < result property= "duyin" column= "duyin"/>         < result property= "numbersd" column= "numbersd"/>         < result property= "sd" column= "sd"/>         < result property= "repsd" column= "repsd"/>         < result property= "hzascii" column= "hzascii"/>     </ resultMap>
            <!-- 调用存储过程返回一个游标 -->     < select id= "getProOneRefcursor" parameterType= "map" statementType= "CALLABLE" resultType= "java.util.Map">        {call sp_one_refcursor(#{id,mode=IN},null,#{result,mode=OUT,jdbcType=OTHER,javaType=ResultSet,resultMap=highgoFunOneRefcursorMap})}     </ select>
        </ mapper>


        4.数据库过程

          CREATE OR REPLACE PROCEDURE test.sp_one_refcursor(integer, INOUT refcursor) LANGUAGE plpgsqlAS $procedure$begin  if $1 = 1 then     open $2 for select * from hzpyszm limit 100;  elseif $1 = 2 then    open $2 for select hanzi,quanpin,szm,duyin from hzpyszm limit 100;  else     open $2 for select hanzi,quanpin from hzpyszm limit 100;  end if;  exception when others then    raise exception 'sql exception--%',sqlerrm;end;$procedure$;


          5.jdbc参数

            url: jdbc:highgo://192.168.21.138:5870/test?escapeSyntaxCallMode=callIfNoReturn


            6.数据库表

              
              
              CREATE 
              TABLE hzpyszm (
              
                hanzi 
              varchar(
              4) 
              NULL,
              
                quanpin 
              varchar(
              10) 
              NULL,
              
                szm 
              varchar(
              5) 
              NULL,
              
                duyin 
              varchar(
              10) 
              NULL,
              
                numbersd 
              varchar(
              1) 
              NULL,
              
                sd 
              varchar(
              5) 
              NULL,
              
                repsd 
              varchar(
              5) 
              NULL,
              
                hzascii 
              int8 
              NULL
              
              );
              
              
              CREATE 
              INDEX hzpyszm_hanzi_idx 
              ON test.hzpyszm 
              USING btree (hanzi varchar_pattern_ops);
              
              
              
              INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '唔', 'ngn', 'n', 'ńgń', '2', NULL, NULL, 21780); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匌', 'ge', 'g', 'gé', '2', 'é', 'e', 21260); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匍', 'pu', 'p', 'pú', '2', 'ú', 'u', 21261); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匎', 'e', 'e', 'è', '4', 'è', 'e', 21262); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匏', 'pao', 'p', 'páo', '2', 'á', 'a', 21263); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匐', 'fu', 'f', 'fú', '2', 'ú', 'u', 21264); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匑', 'gong', 'g', 'gōng', '1', 'ō', 'o', 21265); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匒', 'da', 'd', 'dá', '2', 'á', 'a', 21266); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匓', 'jiu', 'j', 'jiù', '4', 'ù', 'u', 21267); INSERT INTO hzpyszm (hanzi, quanpin, szm, duyin, numbersd, sd, repsd, hzascii) VALUES( '匔', 'gong', 'g', 'gōng', '1', 'ō', 'o', 21268);



              来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994931/viewspace-2884102/ ,如需转载,请注明出处,否则将追究法律责任。

              请登录后发表评论 登录
              全部评论
              瀚高PG实验室(Highgo PG Lab)依托于瀚高DBA运维团队及瀚高数据库PG内核研发团队,旨在深入研究PostgreSQL技术、使用技巧、内核探秘、PG教学等,并进行分享。欢迎大家关注、交流。

              注册时间:2021-02-18

              • 博文量
                184
              • 访问量
                126058