• 调用存储过程msql


    /*
     *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
     *
     *  Redistribution and use in source and binary forms, with or without
     *  modification, are permitted provided that the following conditions are met:
     *
     *  Redistributions of source code must retain the above copyright notice,
     *  this list of conditions and the following disclaimer.
     *  Redistributions in binary form must reproduce the above copyright
     *  notice, this list of conditions and the following disclaimer in the
     *  documentation and/or other materials provided with the distribution.
     *  Neither the name of the dreamlu.net developer nor the names of its
     *  contributors may be used to endorse or promote products derived from
     *  this software without specific prior written permission.
     *  Author: Chill 庄骞 (smallchill@163.com)
     */
    package org.springblade.desk.mapper;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import org.apache.ibatis.annotations.Param;
    import org.springblade.desk.entity.OaSerial;
    
    import java.util.HashMap;
    
    /**
     * Mapper 接口
     *
     * @author Chill
     */
    public interface OaSerialMapper extends BaseMapper<OaSerial> {
    
    	public HashMap<String,Object> getSerial(@Param("tenantId") String tenantId,@Param("module") String module,
    											@Param("dateStr") String dateStr,
    											@Param("prefix") String prefix,
    											@Param("serialLength") int serialLength);
    
    }
    

      mapper.xml文件

    <mapper namespace="org.springblade.desk.mapper.OaSerialMapper">
    
        <select id="getSerial" resultType="java.util.HashMap" statementType="CALLABLE">
            { call get_module_serial_code(#{tenantId},#{module},#{dateStr},#{prefix},#{serialLength}) }
        </select>
    
    
    </mapper>
    

      

    CREATE DEFINER=`root`@`%` PROCEDURE `get_module_serial_code`(IN `p_tenant_id` varchar(20),IN `p_module` varchar(100),IN `p_date` varchar(20),IN `p_prefix` varchar(20),IN `p_serial_length` int)
    BEGIN
    
    	declare p_is_success varchar(10) default 0 ;
        declare l_serial varchar(100); 
    		DECLARE t_error INTEGER DEFAULT 0;    
    		DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 
        
    	start transaction;
    	
    	begin 
    		begin
    
    				IF EXISTS( select 1 from oa_serial where module=p_module and tenant_id = p_tenant_id lock in share mode) then
    					IF EXISTS( select 1 from oa_serial where module=p_module and date_str=p_date and tenant_id = p_tenant_id lock in share mode) then
    						UPDATE	oa_serial
    						SET serial=right(concat('00000000', cast((cast(COALESCE(serial,'0') as signed) +1) as char)),p_serial_length)
    						WHERE module=p_module and date_str=p_date and tenant_id = p_tenant_id ;
    					ELSE
    						UPDATE oa_serial 
    						SET serial = right('00000001',p_serial_length) , date_str=p_date 
    						WHERE module=p_module and tenant_id = p_tenant_id ;
    					end if;
    				ELSE
    					INSERT INTO oa_serial ( tenant_id,module, date_str, serial)
    					VALUES  ( p_tenant_id,p_module,p_date,right('00000001',p_serial_length) ) ;
    				end if;
    				
    				SELECT serial into l_serial  FROM oa_serial WHERE module = p_module and date_str = p_date and tenant_id = p_tenant_id ;  
        end;
    	end;  
        
      IF t_error = 1 THEN    
    		ROLLBACK;   
        set p_is_success='-1';
    	ELSE    
    		COMMIT; 
        set p_is_success='1';
    	END IF; 
        
      if p_is_success = '1' then
    		select concat(p_prefix,l_serial) l_serial,p_is_success ;
    		
      else 
    		select null l_serial ,p_is_success;
      end if;
    	
    	
    END
    

      

  • 相关阅读:
    Java Arrays 的基础知识
    Java 基础知识
    C
    165. 小猫爬山 (dfs)
    164. 可达性统计
    数码 美团资格赛(整数分块)
    1079 中国剩余定理(模板)
    5814: 余数之和(整数分块)
    Greedy Sequence(主席树-区间小于每个数的最大值)
    XKC's basketball team(单调栈+二分)
  • 原文地址:https://www.cnblogs.com/xianz666/p/14479364.html
Copyright © 2020-2023  润新知