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. iOS边练边学--图片的拉伸

    图片拉伸方法一: IOS 5.0以后才有的方法: - (void)viewDidLoad { [super viewDidLoad]; UIImageView *imageView = [[UIIma ...

  2. DataTable的AcceptChanges()和RejectChanges()方法

    一.DataTable.AcceptChanges()方法 提交自上次调用AcceptChanges()方法以来对该表进行的所有更改.调用AcceptChanges()时,任何扔处于编辑模式的Data ...

  3. 执行一条sql语句update多条不同值的记录实现思路

    如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?本文以一个示例向大家讲解下如何实现如标题所示的情况,有此需求的朋友可以了解下 通常情况下,我们会使用以下SQL语句来更新字段值: ...

  4. Springboot 之 Hibernate自动建表(Mysql)

    Springboot 之 Hibernate自动建表(Mysql) 2016年10月21日 10:39:44 阅读数:8180 本文章来自[知识林] 引入Maven依赖包 <dependency ...

  5. DSSM(DEEP STRUCTURED SEMANTIC MODELS)

    Huang, Po-Sen, et al. "Learning deep structured semantic models for web search using clickthrou ...

  6. Docker之删除container和image

    删除所有停止的container: docker rm $(docker ps -a -q) 删除所有未标记的image docker rmi $(docker images | grep " ...

  7. C#中的程序集和命名空间

    C#中的程序集和命名空间 如果说命名空间是类库的逻辑组织形式,那么程序集就是类库的物理组织形式.只有同时指定类型所在的命名空间及实现该类型的程序集,才能完全限定该类型.<精通.NET核心技术-- ...

  8. js计算两个时间相差天数

     //两个时间相差天数 兼容firefox chrome    function datedifference(sDate1, sDate2) {    //sDate1和sDate2是2006-12 ...

  9. js得到当前文档的编码:document.characterSet

    <!DOCTYPE HTML> <html > <head> <meta charset="utf-8"> <!--meta ...

  10. linux中nmcli命令详解

    https://www.iyunv.com/thread-269695-1-1.html http://www.178linux.com/44668