Einführung In Orm-Frameworks wie Hibernate und Mybatis können Sie verknüpfte Objekte festlegen, z. B. Benutzerobjekte, die mit Dept verknüpft sind. Mybatis-Konfiguration UserMapper.xml <resultMap id="BaseResultMap" Typ="testmaven.entity.User"> <id Spalte="id" jdbcType="INTEGER" Eigenschaft="id" /> <Ergebnis Spalte="Name" jdbcType="VARCHAR" Eigenschaft="Name" /> <Ergebnis Spalte="Alter" jdbcType="INTEGER" Eigenschaft="Alter" /> <Ergebnisspalte="dept_id" jdbcType="INTEGER" Eigenschaft="deptId" /> <association property="Abteilung" column="Abteilungs-ID" fetchType="eager" select="testmaven.mapper.DeptMapper.selectByPrimaryKey" ></association> </resultMap> Die Datentabelle sieht wie folgt aus: Abteilungstabelle |ID|Name| Benutzertabelle |id|Name|Abteilungs-ID| Voraussetzung ist, Daten mit folgender Struktur zu erhalten: [ { "id":1, "name":"test", "department_id":1, "abteilung":{ "id":1, "name":"Testabteilung" } } ] Methode 1: Schleifenabfrage Benutzerliste abfragen Zirkuläre Benutzerliste zur Abfrage der entsprechenden Abteilungsinformationen $users = $db->query('SELECT * FROM `user`'); foreach($users as &$user) { $users['Abteilung'] = $db->query('SELECT * FROM `Abteilung` WHERE `id` = '.$user['Abteilung_id']); } Diese Methode führt 1+N Abfragen aus (1 Abfrage an die Liste, N Abfragen an die Abteilung), hat die niedrigste Leistung und ist nicht ratsam. Methode 2: Tabellen verknüpfen Abfragen von Benutzer- und Abteilungsdaten über verknüpfte Tabellen Verarbeitung zurückgegebener Daten $users = $db->query('SELECT * FROM `user` INNER JOIN `department` ON `department`.`id` = `user`.`department_id`'); // Manuelle Verarbeitung gibt das Ergebnis als erforderliche Struktur zurück Diese Methode hat tatsächlich Einschränkungen. Wenn sich Benutzer und Abteilung nicht auf demselben Server befinden, können die Tabellen nicht verknüpft werden. Methode 3: 1+1 Abfrage Diese Methode fragt zunächst einmal die Benutzerliste ab Nehmen Sie die Abteilungs-ID aus der Liste heraus, um ein Array zu bilden Abfrage der Abteilung in Schritt 2 Endgültige Daten zusammenführen Der Code sieht ungefähr so aus: $Benutzer = $db->query('SELECT * FROM `Benutzer`'); $departmentIds = [ ]; foreach($users als $user) { wenn(!in_array($user['department_id'], $departmentIds)) { $departmentIds[] = $user['Abteilungs-ID']; } } $departments = $db->query('SELECT * FROM `department` WHERE id in ('.join(',',$department_id).')'); $map = []; // [Abteilungs-ID => Abteilungselement]foreach($departments as $department) { $map[$Abteilung['id']] = $Abteilung; }foreach($Benutzer als $Benutzer) { $user['Abteilung'] = $map[$user['Abteilungs-ID']] ?? null; } Bei dieser Methode gibt es keine Einschränkungen hinsichtlich der beiden Tabellen, und angesichts der aktuellen Beliebtheit von Microservices stellt sie einen besseren Ansatz dar. Das könnte Sie auch interessieren:
|
<<: So implementieren Sie Property Hijacking mit JavaScript defineProperty
>>: Implementierungsschritte zum Erstellen eines lokalen Webservers auf Centos8
Die Konfigurationsdatei nginx.conf lautet wie fol...
Inhaltsverzeichnis 1. Anweisungen zum Starten und...
1 Starten Sie den Docker-Dienst Zuerst müssen Sie...
Wenn Sie mit virtuellen Maschinen noch nicht vert...
Inhaltsverzeichnis 1. Übersicht 2. Anwendungsbeis...
Ich habe das vorliegende Projekt endlich abgeschl...
Ohne weitere Umschweife hier ein Demobild. Die im...
XML/HTML-CodeInhalt in die Zwischenablage kopiere...
Docker-Installation Installieren von Abhängigkeit...
MySQL-Batch-Einfügeproblem Da bei der Entwicklung...
Inhaltsverzeichnis Ergebnisse auf einen Blick Her...
Zur Aufzeichnung: Es kann in Zukunft verwendet we...
Die Einrichtung eines MySQL-Index ist für den eff...
1. Vorbereitung vor der Installation Überprüfen S...
Bei den tatsächlichen Projekten, an denen ich tei...