VorwortMysql fügt nicht duplizierte Daten ein. Wenn eine große Datenmenge eingefügt werden muss, muss ermittelt werden, ob die Einfügung wiederholt wird, und dann muss sie eingefügt werden. Wie kann also die Effizienz verbessert werden? Es gibt viele Möglichkeiten, das Problem zu lösen, und die Lösungen sind je nach Szenario unterschiedlich. Bei kleinen Datenmengen ist jede Lösung in Ordnung, bei großen Datenmengen ist das Problem jedoch nicht einfach. 1. füge ignore ein in
Controller-Methode: /** *Mitarbeiterdaten einfügen*/ @PostMapping("speichern") @AntwortBody öffentliche CommonResult<Mitarbeiter> speichern(@RequestBody Mitarbeiter Mitarbeiter) { returniere employeeService.saveEmp(Mitarbeiter); } EINFÜGEN IN <!--Mitarbeiterdaten einfügen--> <insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee"> INSERT INTO t_employee(id, Name, Alter, Gehalt, Abteilungs-ID) WERTE (#{id},#{name},#{alter},#{gehalt},#{abteilungs-ID}) </einfügen> Wir fügen einen neuen Mitarbeiterdatensatz mit der Primärschlüssel-ID 1 hinzu. Wenn ich die Anfrage erneut sende, wird ein Ausführungsfehler der SQL-Anweisung gemeldet, da der Primärschlüssel eindeutig ist und der Datensatz mit der ID=1 bereits vorhanden ist. Ignorieren hinzufügen und einen weiteren Mitarbeiterdatensatz mit der ID=1 hinzufügen IGNORE EINFÜGEN IN Es ist kein Fehler aufgetreten, aber die Hinzufügung war nicht erfolgreich und die Hinzufügung doppelter Daten wurde ignoriert. 2. bei doppeltem Schlüssel-Update
BEIM UPDATE EINES DOPPELTEN SCHLÜSSELS id = id Wir fügen dennoch den Mitarbeiterdatensatz mit der ID=1 ein und ändern die anderen Felder (Alter=25): Datenbankeinträge anzeigen: Sie können sehen, dass es keine Änderung gibt, nur ein Datenelement vorhanden ist und eine erfolgreiche Eingabeaufforderung zurückgegeben wird. Diese Methode hat eine Voraussetzung, d. h. die einzufügende Einschränkung muss ein Primärschlüssel oder eine eindeutige Einschränkung sein (in Ihrem Unternehmen sollte das Feld, das als einziges Urteil verwendet werden muss, als eindeutige Einschränkung, d. h. als eindeutiger Schlüssel, festgelegt werden). Erweiterung: Diese Methode erfüllt auch die Anforderungen anderer Geschäftsszenarien ->>> Aktualisieren Sie andere Felder regelmäßig. Wir fügen der Mitarbeitertabelle ein Zeitfeld hinzu: privates Datum, Aktualisierungszeit; Dann fügen wir Daten entsprechend dem Feld updateTime ein: <insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee"> INSERT INTO t_employee(id, Name, Alter, Gehalt, Abteilungs-ID, Aktualisierungszeit) WERTE (#{id},#{name},#{age},#{gehalt},#{abteilungs-ID},jetzt()) BEIM UPDATE EINES DOPPELTEN SCHLÜSSELS update_time = now() </einfügen> Was muss ich tun, wenn ich beim Einfügen andere Felder (z. B. das Alter) aktualisieren muss? 3. ersetzen durch
Ersetzen in <!--Mitarbeiterdaten einfügen--> <insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee"> REPLACE INTO t_employee(id, Name, Alter, Gehalt, Abteilungs-ID, Aktualisierungszeit) WERTE (#{id},#{name},#{age},#{gehalt},#{abteilungs-ID},jetzt()) </einfügen> Zusammenfassung: In der tatsächlichen Entwicklung wird am häufigsten die zweite Methode verwendet, nämlich die Batch-Addition. <!--Mitarbeiterdaten einfügen--> <insert id="saveEmp" parameterType="java.util.List"> INSERT INTO t_employee(id, Name, Alter, Gehalt, Abteilungs-ID, Aktualisierungszeit) WERTE <foreach Sammlung="Liste" Element="Element" Index="Index" Trennzeichen=","> (#{item.id},#{item.name},#{item.age},#{item.salary},#{item.departmentId},jetzt()) </foreach> BEI DUPLIZIERTER SCHLÜSSELAKTUALISIERUNG id = id </einfügen> Regler: @PostMapping("speichern") @AntwortBody öffentliche CommonResult<Mitarbeiter> speichern(@RequestBody List<Mitarbeiter> employeeList) { gibt employeeService.saveEmp(employeeList) zurück; } Wenn die gleiche ID bereits vorhanden ist, wird sie nicht mehrfach hinzugefügt. ZusammenfassenIn der Praxis wird am häufigsten Methode 2 verwendet. Je nach Szenario kommen unterschiedliche Methoden zum Einsatz. Dies ist das Ende dieses Artikels zum Einfügen von Daten ohne Duplikate während der MySql-Batch-Einfügung. Weitere relevante Inhalte zum Einfügen von MySql ohne Duplikate finden Sie in früheren Artikeln auf 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:
|
<<: Eine kurze Diskussion über das Design des Tomcat-Mehrschichtcontainers
>>: Frage zu benutzerdefinierten Attributen von HTML-Tags
Notieren Sie die Installations- und Konfiguration...
Inhaltsverzeichnis Vorteil 1: Optimierung des Dif...
MySQL-Datenbank erstellen Nachdem wir uns beim My...
Ändern Sie den Standardstil der Auswahl, normalerw...
Ich bin kürzlich bei der Arbeit auf ein Problem g...
In letzter Zeit tritt nach dem Aktualisieren der ...
Tomcat selbst optimieren Tomcat-Speicheroptimieru...
1. Laden Sie die MySQL-Repo-Quelle herunter $ wge...
Bei der Verwendung von lepus3.7 zur Überwachung d...
Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...
Inhaltsverzeichnis 1. Wie werden Strukturen im Ge...
Warum brauchen wir Master-Slave-Replikation? 1. I...
1. Entdecken Sie das Problem © ist das Co...
Rational ClearCase ist ein Tool für das Softwarek...
Im täglichen Geschäftsleben gibt es zwei gängige ...