Mybatis+mysql uses stored procedures to generate serial number implementation code

Mybatis+mysql uses stored procedures to generate serial number implementation code

Use stored procedures to start transactions when operating the database to avoid data duplication caused by concurrent operations

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; 
 -- There is no record in the factor table, insert the initial value 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;
   -- Determine whether the year and month need to be updated 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

<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>

Call

Map<String, String> parameterMap = new HashMap<String, String>();
  parameterMap.put("tsCode", "a");
  parameterMap.put("result", "-1");
  faultMapper.getFaultNo(parameterMap);
  // insert failure log (main table)
  if (!parameterMap.get("result").equals("-1") && 
    !parameterMap.get("result").equals("Error")) {
   //Success} else {
   throw new RuntimeException();
  }

Summarize

The above is the implementation code of mybatis+mysql using stored procedures to generate serial numbers introduced by the editor. I hope it will be helpful to everyone. If you have any questions, please leave me a message and the editor will reply to you in time. I would also like to thank everyone for their support of the 123WORDPRESS.COM website!

You may also be interested in:
  • How to use Mysql stored procedures in Mybatis
  • mysql+mybatis implements stored procedure + transaction + multi-concurrent serial number acquisition

<<:  Summary of Linux user groups and permissions

>>:  Steps to introduce PWA into Vue project

Recommend

Sample code for implementing dark mode with CSS variables

Recently, WeChat was forced by Apple to develop a...

Zabbix monitoring solution - the latest official version 4.4 [recommended]

Zabbix 2019/10/12 Chenxin refer to https://www.za...

How to use gdb to debug core files in Linux

1.core file When a Segmentation fault (core dumpe...

Various ways to modify the background image color using CSS3

CSS3 can change the color of pictures. From now o...

Nginx solves cross-domain issues and embeds third-party pages

Table of contents Preface difficulty Cross-domain...

Records of using ssh commands on Windows 8

1. Open the virtual machine and git bash window a...

Does the website's text still need to be designed?

Many people may ask, does the text on the website...

Comparison of the efficiency of different methods of deleting files in Linux

Test the efficiency of deleting a large number of...

Detailed steps to install RabbitMQ in docker

Table of contents 1. Find the mirror 2. Download ...

About the selection of time date type and string type in MySQL

Table of contents 1. Usage of DATETIME and TIMEST...

Use of JavaScript sleep function

Table of contents 1.sleep function 2. setTimeout ...

The reason why MySQL uses B+ tree as its underlying data structure

We all know that the underlying data structure of...