zoukankan      html  css  js  c++  java
  • 7月13 mybatis调用存储过程

    一、提出需求

      查询得到男性或女性的数量, 如果传入的是0就女性否则是男性

     -- 创建存储过程(查询得到男性或女性的数量, 如果传入的是0就女性否则是男性)
    
    DELIMITER $$
    
    USE `test`$$
    
    DROP PROCEDURE IF EXISTS `p_user_count`$$
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `p_user_count`(IN sex_id INT, OUT user_count INT)
    BEGIN
      IF sex_id = 0
      THEN
      SELECT  COUNT(*) FROM  p_user 
        WHERE p_user.sex = '女' INTO user_count;
      ELSE
      SELECT COUNT(*) FROM p_user 
        WHERE p_user.sex = '男' INTO user_count;
      END IF;
    END$$
    
    DELIMITER ;

    分析:这个存储过程 1个入参, 1个出参 

    调用的时候,给一个入参,定义一个出参。结果会赋值到出参

    调用存储过程

    DELIMITER ;
     SET @user_count = 0;
    CALL test.p_user_count(0, @user_count);
    SELECT @user_count;

    查询女性的数量,执行结果

    二、java 调用

    一个入参一个出参,select 里不用定义resultType ,入参和出参都是都是在同一个Map 里

        <select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE">
              CALL p_user_count(?,?)
          </select>
    
        <parameterMap type="java.util.Map" id="getUserCountMap">
             <parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
             <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/>
         </parameterMap>

    定义接口方法

    void getUserCount(Map<String,Integer> params);

    调用

    /** 测试存储过程 */
        @GetMapping("/testcall")
        @ResponseBody
        public R testcall() {
            Map<String, Integer> parameterMap = new HashMap<String, Integer>();
            parameterMap.put("sexid", 1);
            parameterMap.put("usercount", -1);
            userCallMapper.getUserCount(parameterMap);
    
            System.out.println("[result] = " + parameterMap.get("usercount"));
            return R.ok();
        }

    获取结果的时候直接从map 里get

    ######### 测试出错 

    Parameter number 2 is not an OUT parameter

    最终错误是因为存储过程名称写错了,如果名称ok 要确保参数是否是出参

    ---------------------------  工程  ---------------------------

     

  • 相关阅读:
    TSP(Traveling Salesman Problem)-----浅谈旅行商问题(动态规划,回溯实现)
    浅谈Java虚拟机内存中的对象创建,内存布局,访问定位
    Java设计模式---桥接Bridge模式
    Java设计模式---Strategy策略模式
    Java设计模式---ChainOfResponsibility责任链模式
    《前端工程化体系设计与实践》-笔记
    React 16.x 新特性思维导图
    javascript语言精粹-笔记
    react+redux+Instagram
    链表
  • 原文地址:https://www.cnblogs.com/lyon91/p/9300984.html
Copyright © 2011-2022 走看看