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存储过程(返回参数,单结果集,多结果集)

     

  • 相关阅读:
    qemu-kvm虚拟化——内存
    Virtualization and Performance: Understanding VM Exits
    Linux日志文件
    Linux那些让你虎躯一震的命令
    Linux命令——watch
    Linux kernel buffer ring
    Linux命令——dmesg
    Linux命令——systemctl
    Linux命令——taskset
    /sys 和 /dev 区别
  • 原文地址:https://www.cnblogs.com/xiqoqu/p/13879711.html
Copyright © 2011-2022 走看看