Gespeicherte Datenbankprozeduren DROP-VERFAHREN, WENN „Seriennummer nach Datum generieren“ vorhanden ist; PROZEDUR ERSTELLEN `Seriennummer_nach_Datum_generieren`( IN param_key varchar(100), IN param_org_id bigint, IN param_period_date_format varchar(20), OUT-Ergebnis Bigint, OUT current_datestr varchar(20)) beginnen deklarieren Sie old_datestr varchar(20); TRANSAKTION STARTEN; wenn param_period_date_format='unendlich' dann setze current_datestr = '00000000'; anders setze current_datestr = DATE_FORMAT(NOW(), param_period_date_format); Ende wenn; wählen Nummer, Datumstr von sys_serial_number wobei Tabellenschlüssel = Parameterschlüssel und org_id = param_org_id und period_date_format = param_period_date_format in Ergebnis, old_datestr zum Update; WENN das Ergebnis null ist, dann Setze Ergebnis = 1; einfügen in sys_serial_number(table_key, org_id, period_date_format, datestr, number, description) Werte (Paramschlüssel, Paramorg_id, Paramperiodendatumsformat, Current_Datestr, 1, „nach Verfahren hinzufügen“); sonstwenn altes_Datumstr != aktuelles_Datumstr dann Setze Ergebnis = 1; Aktualisieren Sie die Systemseriennummer Satznummer = 1, datestr = aktuelles_datestr wobei Tabellenschlüssel = Parameterschlüssel und org_id = param_org_id und period_date_format = param_period_date_format; Ende wenn; Aktualisiere sys_serial_number, setze Nummer = Nummer + 1 wobei Tabellenschlüssel = Parameterschlüssel und org_id = param_org_id und period_date_format = param_period_date_format; begehen; Ende Seriennummerntabelle Tabelle löschen, wenn `sys_serial_number` vorhanden ist; CREATE TABLE `sys_serial_number` ( `table_key` varchar(100) NOT NULL COMMENT 'Primärschlüssel (Tabellenname wird empfohlen)', `org_id` bigint(20) NICHT NULL STANDARD '0' KOMMENTAR 'Branch-ID', `number` bigint(20) NOT NULL DEFAULT '1' COMMENT 'Seriennummer (inkrementiert durch die gespeicherte Prozedur, +1 nach Erfassung)', `period_date_format` varchar(20) NOT NULL COMMENT 'Datumsformat für den Zeitraum der Seriennummerngenerierung', `datestr` varchar(20) DEFAULT NULL COMMENT 'Seriennummer Datumswert', `Beschreibung` varchar(100) DEFAULT NULL COMMENT 'Beschreibung', PRIMÄRSCHLÜSSEL (`table_key`,`org_id`,`perioden_Datumsformat`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Tabelle zur Seriennummerngenerierung'; Mybatis-Konfiguration <select id="generateSerialNumber" parameterType="java.util.HashMap" statementType="AUFRUFBAR"> <![CDATA[ { rufen Sie generate_serial_number auf ( #{param_key,mode=IN,jdbcType=VARCHAR}, #{param_org_id,mode=IN,jdbcType=BIGINT}, #{Ergebnis,Modus=OUT,jdbcType=BIGINT} ) } ]]> </Auswählen> Testcode @Überschreiben öffentliche Map<String, Objekt> generateSerialNumber(Map<String, Objekt> param) { sysSerialNumberMapper.generateSerialNumber(param); Rückgabeparameter; } endgültige Map<String, Objekt> param = neue HashMap<String, Objekt>(); param.put("param_key","Vertrag"); param.put("param_orgId", 84); neuer Thread(neues Runnable() { @Überschreiben öffentliche Leere ausführen() { für(int i =0; i<100; i++) { Map<String, Object> map = serialNumberProvider.generateSerialNumber(param); System.out.println("thread-1: " + map.get("Ergebnis")); } } }).Start(); neuer Thread(neues Runnable() { @Überschreiben öffentliche Leere ausführen() { für(int i =0; i<100; i++) { Map<String, Object> map = serialNumberProvider.generateSerialNumber(param); System.out.println("thread-2: " + map.get("Ergebnis")); } } }).Start(); neuer Thread(neues Runnable() { @Überschreiben öffentliche Leere ausführen() { für(int i =0; i<100; i++) { Map<String, Object> map = serialNumberProvider.generateSerialNumber(param); System.out.println("thread-3: " + map.get("Ergebnis")); } } }).Start(); byte[] b = neues byte[0]; synchronisiert(b) { b.warten(); } Wenn Sie den Code ausführen und die folgende Fehlermeldung erhalten
Methode zur Fehlerbehebung: 1. Überprüfen Sie, ob die gespeicherte Prozedur korrekt erstellt wurde 2. Überprüfen Sie, ob der Benutzer der Datenquellenverbindung über die Berechtigung zur Ausführung gespeicherter Prozeduren verfügt Dies ist das Ende dieses Artikels über die Implementierung von gespeicherten Prozeduren + Transaktionen + mehrfach gleichzeitiger Seriennummernerfassung mit mysql+mybatis. Weitere relevante Inhalte zu gespeicherten Prozeduren mit mysql-mybatis-Seriennummern finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Bild-Scrolling-Effekt mit CSS3 erstellt
Normalerweise haben wir ein Scan-Feld, wenn wir d...
Die Lösungen für die Probleme, die bei der Erstell...
Vorwort Nachdem ich lange Zeit verschiedene Mater...
<br />Grün liegt zwischen Gelb und Blau (kal...
Detaillierte Erläuterung der JDBC-Datenbankverknü...
Vorbereiten: Downloadadresse für das MySQL 8.0 Wi...
Um den Zeilenabstand von <p></p> festz...
1. Einleitung MDL-Sperren in MySQL haben schon im...
1. px px ist die Abkürzung für Pixel, eine relati...
Deinstallieren Sie die alte MySQL-Version (übersp...
Der Link-In-Stil besteht darin, alle Stile in ein...
3D-Koordinatenkonzept Wenn sich ein Element dreht...
Szenario 1. Pflegen Sie ein Bürgersystem mit eine...
Aktivieren Sie Remote-Zugriffsrechte für MySQL My...
1. Erstellen Sie das Basisimage von jmeter Das Do...