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
In diesem Artikel wird der spezifische Implementi...
Warum befinden sich die Bildlaufleisten der Brows...
Derzeit habe ich ein Projekt erstellt, die Schnitt...
Inhaltsverzeichnis 1. Übersicht 2. Speicherverwal...
Wie wird die Zeilenhöhe vererbt?Schreiben Sie ein...
MySQL Installer bietet eine benutzerfreundliche, ...
1.ssh-Befehl Unter Linux können Sie sich über den...
Inhaltsverzeichnis 1. Schlüsselwörter 2. Dekonstr...
In diesem Artikel wird der spezifische JS-Code zu...
Wenn Sie Erfahrung in der Vue2-Projektentwicklung...
MySQL ist ein relationales Datenbankverwaltungssy...
Überspringen Sie die Docker-Installationsschritte...
Methode 1: schweben: rechts Darüber hinaus wird d...
Was ist ein MIME-TYP? 1. Zunächst müssen wir vers...
Wir müssen zunächst die Luftqualitätsdaten mit de...