主頁 > 知識庫 > mybatis+mysql 使用存儲過程生成流水號的實現(xiàn)代碼

mybatis+mysql 使用存儲過程生成流水號的實現(xiàn)代碼

熱門標簽:西安400電話在哪里辦理 甘孜電話機器人廠家 銀川電銷外呼系統(tǒng)定制 上海智能外呼系統(tǒng)需要多少錢 凱立德科技館地圖標注 哈爾濱crm外呼系統(tǒng)價格 電銷機器人好品牌門薩維l 做地圖標注都需要什么工具 中科嘉智人工智能電銷機器人

使用存儲過程,在操作數(shù)據(jù)庫時開啟事務,避免并發(fā)時同時操作造成數(shù)據(jù)重復

CREATE DEFINER=`root`@`localhost` PROCEDURE `GetSerialNo`(IN tsCode VARCHAR(50),OUT result VARCHAR(200) )
BEGIN 
 DECLARE tsValue VARCHAR(50); 
 DECLARE tdToday VARCHAR(20);  
 DECLARE nowdate VARCHAR(20);  
 DECLARE tsQZ  VARCHAR(50); 
 DECLARE t_error INTEGER DEFAULT 0; 
 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 
 START TRANSACTION; 
  /* UPDATE sys_sno SET sValue=sValue WHERE sCode=tsCode; */
  SELECT sValue INTO tsValue FROM sys_sno WHERE sCode=tsCode; 
  SELECT sQz INTO tsQZ FROM sys_sno WHERE sCode=tsCode ; 
 -- 因子表中沒有記錄,插入初始值  
  IF tsValue IS NULL THEN 
   SELECT CONCAT(DATE_FORMAT(NOW(),'%y%m'),'0001') INTO tsValue; 
   UPDATE sys_sno SET sValue=tsValue WHERE sCode=tsCode ; 
   SELECT CONCAT(tsQZ,tsValue) INTO result; 
  ELSE     
   SELECT SUBSTRING(tsValue,1,4) INTO tdToday; 
   SELECT CONVERT(DATE_FORMAT(NOW(),'%y%m'),SIGNED) INTO nowdate;
   -- 判斷年月是否需要更新
   IF tdToday = nowdate THEN 
    SET tsValue=CONVERT(tsValue,SIGNED) + 1; 
   ELSE 
    SELECT CONCAT(DATE_FORMAT(NOW(),'%y%m') ,'0001') INTO tsValue ; 
   END IF; 
   UPDATE sys_sno SET sValue =tsValue WHERE sCode=tsCode; 
   SELECT CONCAT(tsQZ,tsValue) INTO result; 
  END IF; 
  IF t_error =1 THEN 
  ROLLBACK; 
  SET result = 'Error'; 
  ELSE 
  COMMIT; 
  END IF; 
  SELECT result ;  
END;
dao
Integer getFaultNo(MapString, String> parameterMap);

xml

update id="getFaultNo" parameterMap="getFaultMap" statementType="CALLABLE">
  CALL GetSerialNo(?,?)
 /update>
 !--
  parameterMap.put("tsCode", 0);
  parameterMap.put("result", -1);
  -->
 parameterMap type="java.util.Map" id="getFaultMap">
  parameter property="tsCode" mode="IN" jdbcType="VARCHAR"/>
  parameter property="result" mode="OUT" jdbcType="VARCHAR"/>
 /parameterMap>

調(diào)用

MapString, String> parameterMap = new HashMapString, String>();
  parameterMap.put("tsCode", "a");
  parameterMap.put("result", "-1");
  faultMapper.getFaultNo(parameterMap);
  // insert 故障日志 (主表)
  if (!parameterMap.get("result").equals("-1")  
    !parameterMap.get("result").equals("Error")) {
   //成功
  } else {
   throw new RuntimeException();
  }

總結

以上所述是小編給大家介紹的mybatis+mysql 使用存儲過程生成流水號的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • oracle(plsql)生成流水號
  • PHP獲取MySQL執(zhí)行sql語句的查詢時間方法
  • ThinkPHP框架獲取最后一次執(zhí)行SQL語句及變量調(diào)試簡單操作示例
  • mysql 獲取今天、昨天0點時間戳的實例
  • mysql 獲取昨天日期、今天日期、明天日期以及前一個小時和后一個小時的時間
  • sql 流水號獲取代碼實例

標簽:四川 平頂山 山南 濮陽 浙江 安徽 安康 那曲

巨人網(wǎng)絡通訊聲明:本文標題《mybatis+mysql 使用存儲過程生成流水號的實現(xiàn)代碼》,本文關鍵詞  mybatis+mysql,使用,存儲,過程,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mybatis+mysql 使用存儲過程生成流水號的實現(xiàn)代碼》相關的同類信息!
  • 本頁收集關于mybatis+mysql 使用存儲過程生成流水號的實現(xiàn)代碼的相關信息資訊供網(wǎng)民參考!
  • 推薦文章