Der vorherige Artikel bringt Ihnen MyBatis Level 1 -Cache vor. Freunde in Not können sich darauf beziehen.
Im Vergleich zum Cache der ersten Stufe hat der Cache der zweiten Stufe einen größeren Bereich und kann von mehreren SQLSISIONS geteilt werden.
Wenn Sie dieselbe Abfrage senden, sucht SQL zuerst im Cache und befragt dann die Datenbank, wenn sie nicht gefunden werden kann.
Jeder Namespace Mapper verfügt über einen eigenen Cache -Speicherplatz.
Wenn die Namespaces der beiden Mapper gleich sind, werden die durch Ausführung des Mapper abfragten Daten im selben Level -2 -Cache gespeichert.
In ähnlicher Weise wird der sekundäre Cache gelöscht, wenn SQLSession ausgeführt wird und das Commit ausgeführt wird.
Konfigurationsdatei (sie ist standardmäßig ohne Konfiguration aktiviert):
In sqlmapconfig.xml:
<Einstellung name = "cacheeNabled" value = "true"/>
Im entsprechenden Mapper.xml:
<cache/>
Wenn Sie keinen sekundären Cache benötigen, können Sie den sekundären Cache in Einstellungen deaktivieren
<select usecache = "false"> </select>
Dies wird jedes Mal aus der Datenbank gelesen
Nach dem Ausführen von Einfügen, Aktualisieren, Löschen, der Cache wird aktualisiert (löschen Sie den Cache) und kann nicht aktualisiert werden, um nicht aktualisiert zu werden
Im Allgemeinen kann die Einstellung ein schmutziges Lesen verursachen.
<Einfügen flushcache = "false"> </einfügen>
Kleine Beispiele:
SQLSession Session1 = factory.openSession (); SQLSession Session2 = factory.openSession (); SQLSession Session3 = factory.openSession (); UserMapper mapper1 = session1.getMapper (userMapper.class); UserMapper mapper2 = session2.getMapper (userMapper.class); UserMapper mapPer3 = sesion3.getMapper (userMapper.class); // Die erste Anfrage besteht darin, den Benutzer mit id 1 user1 = mapper1.finduserbyId (1) abzufragen. System.out.println (user1); // Schreiben Sie Daten in die sekundäre Cache -Session1.close (); // den sekundären Cache löschen, user1.setusername ("mmm"); Mapper3.Updateuser (user1); Session3.Commit (); // Die zweite Abfrage sucht nach user2 = mapper2.finduserbyId (1). System.out.println (user2); Session2.CLOSE ();Beachten Sie, dass die auf Stufe 2 zugeschnittenen Objekte die serilisierbare Schnittstelle implementieren müssen, da diese zwischengespeicherten Daten möglicherweise deserialisiert und auf die Festplatte oder anderswo geschrieben werden.
Das obige ist der von dem Editor vorgestellte MyBatis Level 2 -Cache. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!