zoukankan      html  css  js  c++  java
  • myBatis调用postgreSQL存储过程

    1.调用没有OUT参数的存储过程:

    创建存储过程:

                  create or replace function get_code(a1 varchar(32)) returns varchar(32) as $$
              declare the_result varchar(32);
              begin
                  the_result := name from t_project where id = a1;
                return the_result;
              end;
          $$
        language plpgsql;

    sqlMap配置文件:

    <select id="f1" resultType="String"  parameterType="map" statementType="CALLABLE" useCache="false">
              <![CDATA[
               select get_code(
                  #{a1,mode=IN,jdbcType=VARCHAR}
                  )    
           ]]>
        </select>

    注:不使用OUT参数的存储过程可以直接用 select

    程序:

    public String generateCode(String a1) {
            Map<String,String> paramMap = new HashMap<String,String>();
            paramMap.put("a1", a1);
            SqlSession sqlSession = getSqlSession();
            String result = sqlSession.selectOne("f1", paramMap);
            return result;
        }

    2.使用OUT参数的存储过程:

    创建存储过程:

    create or replace function testproc(a1 varchar(32),out a2 varchar(32),out a3 varchar(32)) as $$
        declare  
      begin
                select id  into a2 from t_project where id=a1;
                select name into a3 from t_project where id=a1;
          return;
      end;
    $$
    language plpgsql;

    sqlMap配置文件:

    <select id="generateCode1"  parameterType="map" statementType="CALLABLE" useCache="false">
              {
                  call testproc(
                  #{a1,mode=IN,jdbcType=VARCHAR},
                  #{a2,mode=OUT,jdbcType=VARCHAR},
                  #{a3,mode=OUT,jdbcType=VARCHAR}
                  
               )    
           }
        </select>

    程序:

        public Map generateCode1(String a1) {
            Map<String,String> paramMap = new HashMap<String,String>();
            paramMap.put("a1", k1);
            SqlSession sqlSession = getSqlSession();
            sqlSession.selectOne("generateCode1", paramMap);
            return paramMap;
        }

    带输出参数的存储过程,sqlSession.selectOne("generateCode1", paramMap);

    将paramMap传入之后mybatis调用存储过程,将paramMap进行填充

    paramMap最后的值:{a1=R20148800900, a2=R20148800900, a3=项目名称}

          

  • 相关阅读:
    SQL Server2008中删除重复记录
    Php环境在Windows (server 2003) 服务器部署标准 白丁简明版
    国外服务器鸟文windows,时间12小时制,如何改成24小时呢?我来告诉你
    将Capicom调用代码封装到ActiveX——解决javascript调Capicom读取数字证书信息时,IE弹出安全提示的问题
    Linq处理List数据
    C#将窗口最小化到系统托盘,并显示图标和快捷菜单
    C# 将程序添加到启动项 (写入注册表),及从启动项中删除
    C#中string[]数组和list<string>泛型的相互转换
    IIS7.5部署ASP.NET失败
    IIS 7.5版本中一些诡异问题的解决方案
  • 原文地址:https://www.cnblogs.com/jiaoyiping/p/4063805.html
Copyright © 2011-2022 走看看