千家信息网

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

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,使用存储过程,在操作数据库时开启事务,避免并发时同时操作造成数据重复CREATE DEFINER=`root`@`localhost` PROCEDURE `GetSerialNo`(IN tsCod
千家信息网最后更新 2026年10月31日mybatis+mysql 使用存储过程生成流水号的实现代码

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

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 parameterMap);

xml

  CALL GetSerialNo(?,?)        

调用

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

过程 存储 数据 代码 流水 流水号 生成 成功 事务 同时 因子 年月 故障 数据库 日志 疑问 网站 帮助 支持 更新 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网产品 圆梦互联网科技 互联网科技开发公司 广州宏创互联网科技 鑫亿盛互联网科技 丰台科技园 互联网公司 互联网科技公司的市场部门 互联网科技公司需要的职位 燊美集互联网科技有限公司 特约风豹互联网科技为什么扣费 互联网科技公司营业执照怎么办理 中和天地互联网科技有限公司 中科明德北京互联网科技 无锡工业互联网科技有限公司 互联网科技圈年度人物 福州德业互联网科技 西安左小互联网科技有限公司 张家口科技产业互联网平台 数字互联网科技有限公司 长沙易易互联网科技有限公司 云南咖啡 互联网科技名片 互联网科技公司简介 互联网科技金融公司 太原新华互联网科技学校怎么样 宁夏科技产业互联网案例 扫呗互联网科技有限公司 福仕德教育科技互联网 第三届互联网大会安防黑科技 保山浩联互联网科技有限公司
0