Detaillierte Erklärung des MyBatis-Lazy-Loading-Beispiels
1. Was ist Lazy Loading? Zu-Eins- und Eins-zu-Viele-Zuordnung),
Assoziation und Sammlung verfügen über eine Lazy-Loading-Funktion. Anforderungen:
Wenn Sie die Bestellung abfragen und damit verbundene Benutzerinformationen abfragen. Wenn wir zuerst die Bestellinformationen abfragen, können wir die Anforderungen erfüllen. Wenn wir die Benutzerinformationen abfragen müssen, überprüfen wir die Benutzerinformationen. Das Abfragen von Benutzerinformationen bei Bedarf ist Lazy Loading. Verzögertes Laden: Zuerst eine Abfrage aus einer einzelnen Tabelle durchführen und dann bei Bedarf verwandte Abfragen aus verwandten Tabellen durchführen, was die Datenbankleistung erheblich verbessert, da die Abfrage einer einzelnen Tabelle schneller ist als die Abfrage mehrerer Tabellen auf verwandte Weise.
2. Verwenden Sie die Zuordnung, um Lazy Loading zu implementieren
2.1 Anforderungen
Fragen Sie Aufträge ab und verknüpfen Sie Abfragebenutzerinformationen
2.2mapper.xml
Es ist notwendig, die Anweisungen zu definieren, die den beiden Mapper-Methoden entsprechen.
(1) Nur Bestellinformationen abfragen
SELECT * FROMorders
In der Abfrageanweisung order
Verwenden Sie die Zuordnung, um das Laden (Ausführen) der folgenden Anweisung zu verzögern (Zugehörige Benutzerinformationen abfragen).(2) Benutzerinformationen nach Zuordnung abfragen
Verwenden Sie die user_id in den oben abgefragten Bestellinformationen, um Benutzerinformationen nach Zuordnung abzufragen<!-- 查询订单关联查询用户 --><select id="findOrdersUserLazyLoading" resultMap="OrdersUserLazyLoadingResultMap">SELECT * FROM orders</select>
<select id="findUserById" parameterType="int" resultType="user">select * from user where id=#{value}</select>
2.4mapper.java
<!-- 延迟加载的resultMap --><resultMap type="joanna.yan.mybatis.entity.Orders" id="OrdersUserLazyLoadingResultMap"><!-- 1.对订单信息进行映射配置 --><id column="id" property="id"/><result column="user_id" property="userId"/><result column="number" property="number"/><result column="createtime" property="createtime"/><result column="note" property="note"/><!-- 2.实现对用户信息进行延迟加载 --><!-- select:指定延迟加载需要执行的statement的id(是根据user_id查询用户信息的statement) 要使用UserMapper.xml中findUserById完成根据用户id(user_id)用户信息的查询, 如果findUserById不在本mapper中需要前边加namespace。 column:订单信息中关联用户信息查询的列,是user_id 关联查询的sql理解为: SELECT orders.*, (SELECT username FROM USER WHERE orders.user_id = user.id)username, (SELECT sex FROM USER WHERE orders.user_id = user.id)sex FROM orders--><association property="user" javaType="joanna.yan.mybatis.entity.User"select="joanna.yan.mybatis.mapper.UserMapper.findUserById" column="user_id"></association></resultMap>
//查询订单关联查询用户,用户信息时延迟加载public List<Orders> findOrdersUserLazyLoading() throws Exception;
(2) Durchlaufen Sie im Programm die im vorherigen Schritt abgefragte Liste Wenn wir getUser() in Orders aufrufen, beginnt das verzögerte Laden.
(3) Verzögern Sie das Laden und rufen Sie die findUserById-Methode in UserMapper.xml auf, um Benutzerinformationen abzurufen.
2.5.2 Konfiguration für verzögertes Laden
Mybatis aktiviert standardmäßig kein verzögertes Laden und muss in SqlMapConfig.xml konfiguriert werden.
Konfiguriert in der Mybatis-Kernkonfigurationsdatei:
lazyLoadingEnabled, aggressiveLazyLoading
Einstellungselement |
Beschreibung |
Zulässige Werte |
Standardwert |
||||||||||||
lazyLoadingEnabled | Lazy Loading global festlegen. Wenn auf „false“ gesetzt, werden zunächst alle zugehörigen geladen. |
true |. false
|
false |
||||||||||||
aggressiveLazyLoading |
Wenn auf „true“ gesetzt, können verzögert geladene Objekte vollständig mit allen verzögert geladenen Attributen geladen werden. Ansonsten wird jede Eigenschaft bei Bedarf geladen. |
true |. false <!-- 全局配置参数,需要时再设置 --> <settings> <!-- 打开延迟加载的开关 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 将积极加载改为消极加载即按需要加载 --> <setting name="aggressiveLazyLoading" value="false"/> </settings> Nach dem Login kopieren |
true |
Konfiguriert in SqlMapConfig.xml:
@Testpublic void findOrdersUserLazyLoadingTest() throws Exception{ SqlSession sqlSession=sqlSessionFactory.openSession(); OrdersCustomMapper ordersCustomMapper=sqlSession.getMapper(OrdersCustomMapper.class); List<Orders> list=ordersCustomMapper.findOrdersUserLazyLoading();for (Orders orders : list) {//执行getUser()去查询用户信息,这里实现按需加载User user=orders.getUser(); System.out.println(user); } sqlSession.close(); }
2.5.3 Testcode
2.6 Gedanken zum Lazy LoadingSo implementieren Sie dies, ohne die von bereitgestellte Lazy-Loading-Funktion in Assoziation und Sammlung zu verwenden mybatis Lazy Loading? Die Implementierungsmethode ist wie folgt: Definieren Sie zwei Mapper-Methoden: (1) Fragen Sie die Bestellliste ab (2) Fragen Sie Benutzerinformationen basierend ab auf Benutzer-IDImplementierungsidee: Fragen Sie zuerst die erste Mapper-Methode ab und erhalten Sie die Bestellinformationsliste Rufen Sie im Testprogramm nach Bedarf die zweite Mapper-Methode auf, um Benutzerinformationen abzufragen. Kurz gesagt, fragen Sie mit der Lazy-Loading-Methode zunächst einfaches SQL ab (vorzugsweise eine einzelne Tabelle, aber auch verwandte Abfragen) und laden Sie dann nach Bedarf weitere Informationen für verwandte Abfragen.Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des MyBatis-Lazy-Loading-Beispiels. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Interpretation der dynamischen SQL-Tags von MyBatis: Detaillierte Erläuterung der Verwendung von Set-Tags. MyBatis ist ein hervorragendes Persistenzschicht-Framework. Es bietet eine Fülle dynamischer SQL-Tags und kann Datenbankoperationsanweisungen flexibel erstellen. Unter anderem wird das Set-Tag zum Generieren der SET-Klausel in der UPDATE-Anweisung verwendet, die sehr häufig bei Aktualisierungsvorgängen verwendet wird. In diesem Artikel wird die Verwendung des Set-Tags in MyBatis ausführlich erläutert und seine Funktionalität anhand spezifischer Codebeispiele demonstriert. Was ist Set-Tag? Set-Tag wird in MyBati verwendet

Analyse des MyBatis-Caching-Mechanismus: Der Unterschied und die Anwendung von First-Level-Cache und Second-Level-Cache Im MyBatis-Framework ist Caching eine sehr wichtige Funktion, die die Leistung von Datenbankoperationen effektiv verbessern kann. Unter diesen sind der First-Level-Cache und der Second-Level-Cache zwei häufig verwendete Caching-Mechanismen in MyBatis. In diesem Artikel werden die Unterschiede und Anwendungen von First-Level-Cache und Second-Level-Cache im Detail analysiert und spezifische Codebeispiele zur Veranschaulichung bereitgestellt. 1. Level-1-Cache Der Level-1-Cache wird auch als lokaler Cache bezeichnet. Er ist standardmäßig aktiviert und kann nicht deaktiviert werden. Der Cache der ersten Ebene ist SqlSes

Der Reiz des Erlernens der C-Sprache: Das Potenzial von Programmierern freisetzen Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Computerprogrammierung zu einem Bereich geworden, der viel Aufmerksamkeit erregt hat. Unter vielen Programmiersprachen war die Sprache C schon immer bei Programmierern beliebt. Seine Einfachheit, Effizienz und breite Anwendung machen das Erlernen der C-Sprache für viele Menschen zum ersten Schritt, um in den Bereich der Programmierung einzusteigen. In diesem Artikel geht es um den Reiz des Erlernens der C-Sprache und darum, wie man das Potenzial von Programmierern durch das Erlernen der C-Sprache freisetzt. Der Reiz des Erlernens der C-Sprache liegt zunächst einmal in ihrer Einfachheit. Im Vergleich zu anderen Programmiersprachen C-Sprache

Beim Bearbeiten von Textinhalten in Word müssen Sie manchmal Formelsymbole eingeben. Manche Leute wissen nicht, wie man die Stammzahl in Word eingibt, also habe ich den Redakteur gebeten, mit meinen Freunden ein Tutorial zur Eingabe der Stammzahl in Word zu teilen. Ich hoffe, es hilft meinen Freunden. Öffnen Sie zunächst die Word-Software auf Ihrem Computer, öffnen Sie dann die Datei, die Sie bearbeiten möchten, und bewegen Sie den Cursor an die Stelle, an der Sie das Stammzeichen einfügen müssen, siehe Beispielbild unten. 2. Wählen Sie [Einfügen] und dann im Symbol [Formel]. Wie im roten Kreis im Bild unten gezeigt: 3. Wählen Sie dann unten [Neue Formel einfügen]. Wie im roten Kreis im Bild unten gezeigt: 4. Wählen Sie [Radikal] und dann das entsprechende Radikal. Wie im roten Kreis im Bild unten gezeigt:

Titel: Lernen Sie die Hauptfunktionen der Go-Sprache von Grund auf. Als einfache und effiziente Programmiersprache wird die Go-Sprache von Entwicklern bevorzugt. In der Go-Sprache ist die Hauptfunktion eine Einstiegsfunktion, und jedes Go-Programm muss die Hauptfunktion als Einstiegspunkt des Programms enthalten. In diesem Artikel wird erläutert, wie Sie die Hauptfunktion der Go-Sprache von Grund auf erlernen, und es werden spezifische Codebeispiele bereitgestellt. 1. Zuerst müssen wir die Go-Sprachentwicklungsumgebung installieren. Sie können zur offiziellen Website (https://golang.org) gehen

Spieler können beim Spielen im Mistlock-Königreich verschiedene Materialien sammeln. Viele Spieler möchten wissen, ob Gebäude im Mistlock-Königreich nicht in der Wildnis gebaut werden können. . Können im Mistlock Kingdom Gebäude in freier Wildbahn gebaut werden? 1. In den wilden Gebieten des Mist Lock Kingdom können keine Gebäude gebaut werden. 2. Das Gebäude muss im Rahmen des Altars errichtet werden. 3. Spieler können den Geisterfeueraltar selbst errichten, aber sobald sie den Bereich verlassen, können sie keine Gebäude mehr errichten. 4. Wir können als Zuhause auch direkt ein Loch in den Berg graben, sodass wir keine Baumaterialien verbrauchen müssen. 5. In den von den Spielern selbst gebauten Gebäuden gibt es einen Komfortmechanismus, d. h. je besser die Innenausstattung, desto höher der Komfort. 6. Hoher Komfort bringt den Spielern Attributsboni, wie z

MyBatis ist ein beliebtes Persistenzschicht-Framework, das praktische SQL-Zuordnungs- und Datenbankbetriebsfunktionen bietet und Entwicklern eine effizientere Interaktion mit der Datenbank ermöglicht. Im eigentlichen Entwicklungsprozess müssen wir manchmal die von MyBatis auf der Konsole ausgeführten SQL-Anweisungen in Echtzeit ausdrucken, um SQL-Abfragen besser debuggen und optimieren zu können. In diesem Artikel wird erläutert, wie Sie das Drucken von SQL in Echtzeit auf der Konsole in MyBatis realisieren, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir My hinzufügen

Originalautor: Minty, Encryption KOL Originalzusammenstellung: Shenchao TechFlow Wenn Sie wissen, wie man es verwendet, ist Dune ein All-in-One-Alpha-Tool. Bringen Sie Ihre Forschung mit diesen 20 Dune-Dashboards auf die nächste Stufe. 1. TopHolder-Analyse Dieses einfache, von @dcfpascal entwickelte Tool kann Token anhand von Indikatoren wie der monatlichen Aktivität der Inhaber, der Anzahl der einzelnen Inhaber und der Gewinn- und Verlustquote der Brieftasche analysieren. Besuchen Sie den Link: https://dune.com/dcfpascal/token-holders2. Token-Übersichtsmetriken @andrewhong5297 hat dieses Dashboard erstellt, das eine Möglichkeit bietet, Token durch die Analyse von Benutzeraktionen zu bewerten
