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=项目名称}

myBatis调用postgreSQL存储过程的更多相关文章

  1. Mybatis调用PostgreSQL存储过程实现数组入参传递

    注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于Pos ...

  2. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  3. 调用PostgreSQL存储过程,找不到函数名的问题

    PostgreSQL的表,函数名称都是严格区分大小写的,所以在使用的时候没有注意大小写问题容易导致找不到函数名的错误,但最近两天我们发现,如果函数参数使用了自定义的数据类型,也会发生这个问题. 问题描 ...

  4. java, mybatis, 调用mysql存储过程

    Map<String, Object> bindinfo = new HashMap<String, Object>();            bindinfo.put(&q ...

  5. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析

    首先根据这篇文章:http://www.cnblogs.com/coolzdp/p/7717332.html 我们知道存储过程中 SELECT * INTO 如果没有记录是不会往下执行的,直接抛出NO ...

  6. Mybatis调用Mysql存储过程

    在我的后台系统中,今天需要使用到存储过程.存储过程还真没写过,今天就写了个存储过程.使用在后台中. 其实这个接口功能  是涉及几张表的修改,删除,新增的.就写个一个存储过程. 存储过程: ), ),) ...

  7. mybatis 调用mysql存储过程 带输出输入参数

    http://lohasle.iteye.com/blog/1669879 存储过程都是一样的,只是根据自己的喜好,可以用MAP或者JAVABEAN传递参数. -- ----------------- ...

  8. mybatis调用oracle存储过程的几个参考例子

    首先写一个存储过程: create or replace procedure p_syn_equipment_20161205 is sqlstr ); begin --清空表 sqlstr := ' ...

  9. mybatis 调用oracle存储过程如何返回out参数值

    调试了半天,其实整体用map传入传出也挺简单, 主要是调用存储过程 select标签里平时习惯不写 statementType="CALLABLE",调用没有out参数时也能正常用 ...

随机推荐

  1. [转]Private Libraries、Referenced Libraries、Dependency Libraries的区别

    一.v4.v7.v13的作用和用法 1.Android Support V4, V7, V13是什么? 本质上就是三个java library. 2.为什么要有support库?   是为了解决软件的 ...

  2. iOS开发小技巧--tableView中实现无数据无分割线,有数据才有分割线

    通过通讯录练习GET的技能

  3. node-webkit连接mysql

    一.安装node.js mysql驱动库 node-webkit里面没有mysql模块的,我们需要安装mysql模块.我们可以使用npm(Node package manager)进行安装.这里使用到 ...

  4. EMS快递单号生成算法

    <?php function emsnum($ems, $num) { $fri = substr($ems, 2, 8); $head = substr($ems, 0, 2); $tail ...

  5. OpenMediaVault的OwnCloud扩展不支持NTFS格式硬盘

    来源https://forum.openmediavault.org/index.php/Thread/15510-OwnCloud-Operation-not-supported-setfacl/ ...

  6. tensorflow中slim模块api介绍

    tensorflow中slim模块api介绍 翻译 2017年08月29日 20:13:35   http://blog.csdn.net/guvcolie/article/details/77686 ...

  7. Android Looper详解

    在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数, 一般都是一个带有循环的函数,来处理某些数据,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结 ...

  8. R语言绘图边框

    在R语言中, 绘图边框一共有3个区域: device region : figure region : plot region   : 在描述不同区域大小的时候,有对应的不同参数: din : 返回d ...

  9. iOS 数据压缩与解压

    转自: http://blog.csdn.net/dkq972958298/article/details/53321804 在实际开发中,我们经常要对比较大的数据进行压缩后再上传服务器,下面是我在项 ...

  10. org.xml.sax.SAXParseException: prolog 中不允许有内容

    org.xml.sax.SAXParseException: prolog 中不允许有内容 digester.fatalError 不下心踢了电源导致的错误应该是解析xml出问题,找了半天不知道哪个x ...