gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章mybatis+mysql 使用存储过程生成流水号的实现代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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(Map<String, String> parameterMap);

xml 。

?
1
2
3
4
5
6
7
8
9
10
11
< 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>

调用 。

?
1
2
3
4
5
6
7
8
9
10
11
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 使用存储过程生成流水号的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。

原文链接:https://www.jianshu.com/p/d7570564f104 。

最后此篇关于mybatis+mysql 使用存储过程生成流水号的实现代码的文章就讲到这里了,如果你想了解更多关于mybatis+mysql 使用存储过程生成流水号的实现代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com