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. [ES6]探究数据绑定之Proxy

    知识储备 Proxy 方式实现数据绑定中涉及到 Proxy.Reflect.Set.Map 和 WeakMap,这些都是 ES6 的新特性. Proxy Proxy 对象代理,在目标对象之前架设一层拦 ...

  2. FFmpeg API变化

    可以查看doc目录下的APIchanges和根目录下的Changelog 去掉了ffserver程序   'avcodec_register_all' is deprecated 还有av_regis ...

  3. bson.errors.InvalidStringData: strings in documents must be valid UTF-8

    场景: pymongo 查询数据库的时候报错. for gscode in GSList_StockPool_Mongo_MktStop: self._collection_flash.find({& ...

  4. IOC关注服务(或应用程序部件)是如何定义的以及他们应该如何定位他们依赖的其它服务

    IOC关注服务(或应用程序部件)是如何定义的以及他们应该如何定位他们依赖的其它服务.通常,通过一个容器或定位框架来获得定义和定位的分离,容器或定位框架负责: 保存可用服务的集合 提供一种方式将各种部件 ...

  5. 【转载】WebApi 接口测试工具:WebApiTestClient

    正文 前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点 ...

  6. gsoap 学习 1-如何使用

    新年伊始,想把onvif和gsoap boa这三个东西学习下,并作下笔记,当然为了省时间,我昨天下午看了一个下午的gsaop官网pdf感触良多,也做了小测试,废话少说,一下也有一些是摘自网友博客,大部 ...

  7. circRNA 序列提取中的难点

    在预测circRNA时,都是检测breakpoint 处的reads 数,最后给出的环状RNA的ID 都是诸如 chr14:106994222-107183708 这样的形式,给出了起始和终止位置: ...

  8. vnc 多用户登录

    1, 创建新用户: $ useradd tom $ passwd tom 2,  登录到tom账户,创建vnc实例: $ su tom$ vncserver 这时可以看看~/.vnc/目录下,有一些如 ...

  9. asp.net MVC提高开发速度(创建项目模板)

  10. CMD命令进入文件夹

    cmd 进入E文件夹 E: 查看文件夹目录  dir 进入某个文件夹 cd 目录