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
<br />In Gästebüchern, Foren und anderen Ort...
Vorwort Der Blogger verwendet die Idea IDE. Da di...
In diesem Artikelbeispiel wird der spezifische Co...
In diesem Artikelbeispiel wird der spezifische Co...
Wenn Sie das Breitenattribut direkt auf den Stil d...
Verknüpfung: https://qydev.weixin.qq.com/wiki/ind...
Standardmäßig läuft Docker über einen nicht verne...
Dieser Artikel veranschaulicht anhand von Beispie...
In diesem Artikelbeispiel wird der spezifische Co...
Das Upload-Formular mit Bildvorschaufunktion, der...
So können Sie mithilfe des CSS-Stils die Schrifta...
Der Zweck der Verwendung von HTML zum Markieren v...
Inhaltsverzeichnis 1. Umgebungskonfiguration 1.NT...
html <!DOCTYPE html> <html lang="de...
Bei der Frontend-Entwicklung stehen wir in direkt...