zoukankan      html  css  js  c++  java
  • Mybatis 使用@select注解调用带输出参数的存储过程

     @Options(statementType = StatementType.CALLABLE)
     @Select("{Call procdure_name(" +
             "#{map.name,mode=OUT,jdbcType=INTEGER}," +
             "#{map.password,mode=OUT,jdbcType=INTEGER}," +
             "#{map.total,mode=OUT,jdbcType=INTEGER})}")
    void   getXXXXX(Map<String,Object> map);

     

    //调用

    Map<String, Object> map=new HashMap<>();
    XXXXMapper.getXXXXX(map);
    Map<String, Integer> totalMap = (Map<String, Integer>) map.get("map");//map获取
    Integer total = totalMap.get("total");//key值与传参时一致
    Integer name= totalMap.get("name");
    Integer password= totalMap.get("password");

     

     

    注意点:

     

    1、@options:statementType.CallAble 必须声明,告诉程序这是要执行存储过程,否则会报,main找不到

     

    2、有两种方式带参:$”#”

     

    主要区别就是#带双引号,$不带

     

    例如:#{id}代表'id'${id}代表id

     

    第二种因为传一个参数是可以省略@Param("")的,但是这种情况下不能使用${},

     

    传两个参数以上时,必须要写@Param("")

     

    3、 存储过程的output参数,只能通过传入的map获取参数,使用map.XXX ;

     

    输出参数 设置mode=OUT ,jdbcTypeSQL中存储过程类型一致。

     

    4、存储过程对应的数据类型为枚举类型,需要使用大写,如VARCHAR

     

    5、存储过程返回的结果集可直接用返回的map接收

     

     

     

     

     

    参考文献:

     

    mybatis调用mysql存储过程(返回参数,单结果集,多结果集)

     

  • 相关阅读:
    JSP第三章
    JSP第二章
    JSP第一章
    异常
    七种设计原则
    非泛型集合
    .NET第一章
    航班预定系统
    JSP数据交互(二)
    JSP数据交互(一)
  • 原文地址:https://www.cnblogs.com/xiqoqu/p/13879711.html
Copyright © 2011-2022 走看看