Inhaltsverzeichnis
2.2mapper.xml
Es ist notwendig, die Anweisungen zu definieren, die den beiden Mapper-Methoden entsprechen.
SELECT * FROMorders
(2) Durchlaufen Sie im Programm die im vorherigen Schritt abgefragte Liste<Orders> 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.
lazyLoadingEnabled, aggressiveLazyLoading
Konfiguriert in SqlMapConfig.xml:
2.5.3 Testcode
Heim Java javaLernprogramm Detaillierte Erklärung des MyBatis-Lazy-Loading-Beispiels

Detaillierte Erklärung des MyBatis-Lazy-Loading-Beispiels

Jun 25, 2017 am 10:38 AM
mybatis 学习 搭建 geh tief

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>
Nach dem Login kopieren
Verwenden Sie findUserById

Führen Sie zuerst findOrdersUserLazyLoading aus. Wenn Sie den Benutzer abfragen müssen, wird die Lazy-Loading-Ausführungskonfiguration ausgeführt Definition von resultMap aufstehen.

2.3 Lazy Loading von resultMap
    <select id="findUserById" parameterType="int" resultType="user">select * from user where id=#{value}</select>
Nach dem Login kopieren
Verwenden Sie select in Verbindung, um die ID der Anweisung anzugeben, die durch Lazy Loading ausgeführt werden soll.

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>
Nach dem Login kopieren
2.5 Test

2.5.1 Testidee
    //查询订单关联查询用户,用户信息时延迟加载public List<Orders> findOrdersUserLazyLoading() throws Exception;
Nach dem Login kopieren
(1) Führen Sie die obige Mapper-Methode (findOrdersUserLazyLoading) aus und rufen Sie intern findOrdersUserLazyLoading in joanna.yan.mybatis.mapper.OrdersCustomMapper auf, um nur Bestellinformationen abzufragen (einzelne Tabelle).

(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

设置项

描述

允许值

默认值

lazyLoadingEnabled

全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载。

true | false

false

aggressiveLazyLoading

当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。

true | false

true

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();
    }
Nach dem Login kopieren

2.5.3 Testcode

2.6 Gedanken zum Lazy Loading

So 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-ID

Implementierungsidee: 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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis Feb 26, 2024 pm 07:48 PM

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

Analysieren Sie den Caching-Mechanismus von MyBatis: Vergleichen Sie die Eigenschaften und die Verwendung des Caches der ersten Ebene und des Caches der zweiten Ebene Analysieren Sie den Caching-Mechanismus von MyBatis: Vergleichen Sie die Eigenschaften und die Verwendung des Caches der ersten Ebene und des Caches der zweiten Ebene Feb 25, 2024 pm 12:30 PM

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

Die Attraktivität der C-Sprache enthüllen: Das Potenzial von Programmierern aufdecken Die Attraktivität der C-Sprache enthüllen: Das Potenzial von Programmierern aufdecken Feb 24, 2024 pm 11:21 PM

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

Lassen Sie uns gemeinsam lernen, wie Sie die Stammzahl in Word eingeben Lassen Sie uns gemeinsam lernen, wie Sie die Stammzahl in Word eingeben Mar 19, 2024 pm 08:52 PM

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:

Lernen Sie die Hauptfunktion der Go-Sprache von Grund auf kennen Lernen Sie die Hauptfunktion der Go-Sprache von Grund auf kennen Mar 27, 2024 pm 05:03 PM

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

Können im Mistlock Kingdom Gebäude in freier Wildbahn gebaut werden? Können im Mistlock Kingdom Gebäude in freier Wildbahn gebaut werden? Mar 07, 2024 pm 08:28 PM

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

Echtzeitüberwachung der SQL-Ausgabe in der MyBatis-Konsole Echtzeitüberwachung der SQL-Ausgabe in der MyBatis-Konsole Feb 25, 2024 pm 03:48 PM

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

Verstehen Sie diese 20 Dune-Analyse-Dashboards und erfassen Sie schnell Trends in der Kette Verstehen Sie diese 20 Dune-Analyse-Dashboards und erfassen Sie schnell Trends in der Kette Mar 13, 2024 am 09:19 AM

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

See all articles