香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > MYSQL >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

mybatis+mysql 使用存储过程生成流水号的实现代码


时间:2020-11-03 13:34 作者:admin


使用存储过程,在操作数据库时开启事务,避免并发时同时操作造成数据重复

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;daoInteger getFaultNo(Map<String, 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>

调用

Map<String, String> parameterMap = new HashMap<String, 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/' target='_blank'>mysql 使用存储过程生成流水号的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)