zoukankan      html  css  js  c++  java
  • mybatis调用存储过程实例

    sqlMap:

    <select id="proc_name" statementType="CALLABLE" parameterType="java.util.HashMap" resultType="java.lang.Integer">
            {
                call proc_name(
                    #{userId,mode=IN,jdbcType=INTEGER},
                    #{auditPoolId,mode=OUT,jdbcType=VARCHAR}
                )
            }
    </select>

    存储过程:

    DELIMITER $$
    CREATE PROCEDURE `databaseName`.`proc_name` (IN userId BIGINT(20), OUT auditPoolId INT) 
    BEGIN
      DECLARE v_totalCount INT ;
      DECLARE v_borrowId INT ;
      -- 我的数量
      SELECT 
        COUNT(*) totalCount 
      FROM
        fk_audit_pool t 
      WHERE t.status = '1' 
        AND t.checkout_user_id = userId INTO v_totalCount ;
      IF v_totalCount < 10 
      THEN
        -- 获取最老的一条数据
          SELECT
            id,
            t.xd_borrow_form_id 
          FROM
            fk_audit_pool t 
          WHERE t.xd_borrow_form_id = 
            (SELECT 
              MAX(t.xd_borrow_form_id) 
            FROM
              fk_audit_pool t 
            WHERE t.status = '0') INTO auditPoolId,v_borrowId ;
            
        -- 修改状态
          UPDATE 
            fk_audit_pool t 
          SET
            t.status = '1',
            t.checkout_user_id = userId,
            t.checkout_time = SYSDATE() 
          WHERE t.xd_borrow_form_id = v_borrowId ;  
      END IF ;
    END $$
    
    DELIMITER ;

     调用:

      Map<String, Object> getOneMap = new HashMap<String, Object>();
      getOneMap.put("userId", sysUser.getUserId());

    dao.getOne("proc_name",paraMap);
    Integer id = (Integer)  paraMap.get("auditPoolId");//存储过程的output参数,只能通过传入的map获取
  • 相关阅读:
    SQL SERVER 如何处理带字母的自增列--【叶子】
    实现对数据进行分组小计并计算合计的实例 asp.net
    sql 随笔
    事务
    游标
    触发器
    Session的生命周期
    ASP.NET 推荐书籍
    asp.net 查询本地excel 获取信息
    使用DotNetZip压缩与解压缩
  • 原文地址:https://www.cnblogs.com/yushouling/p/4856034.html
Copyright © 2011-2022 走看看