Der Client sendet die gleiche SQL-Abfrageanweisung an den Datenbankserver. Wenn auf die Datenbank jedes Mal zugegriffen wird, wird die Leistung verringert.
Wie kann man sich also verbessern?
mybatis bietet uns eine Cache-Strategie der ersten Ebene
Zwischen dem Öffnen und Schließen einer sqlSession verwaltet das sqlSession-Objekt (eigentlich der Executor) zunächst ein zwischengespeichertes Objekt Durchsuchen Sie den Cache, um festzustellen, ob die Daten vorhanden sind. Wenn sie nicht vorhanden sind, senden Sie eine SQL-Abfrage an die Datenbank, speichern Sie die Abfragedaten im Cache und geben Sie sie an das Programm zurück.
Es wird ein Problem auftreten:
Wenn ein Programm während der ersten und zweiten Abfrage die Daten der abzufragenden Datenbank ändert, führt dies dazu, dass die gelesenen Daten falsch sind. Das heißt,
Dirty Reading. Tatsächlich löscht mybatis den Cache, nachdem die Methode commit() in sqlSession ausgeführt wurde. Bei der zweiten Abfrage erfolgt weiterhin eine Abfrage aus der Datenbank.
Sie können die Methode „clearCache()“ von sqlSession auch manuell aufrufen, um den Cache zu leeren.
Kleines Beispiel:
@Test public void testCacheLever1() throws Exception{ SqlSession session = factory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); //第一次请求,查询id为1的用户 User user = mapper.findUserById(1); System.out.println(user); //更改数据,会清空缓存 user.setUsername("yyyy"); mapper.updateUser(user); session.commit(); //第二次查询会从缓存中找 User user2 = mapper.findUserById(1); System.out.println(user2); session.close(); }
Problem:
Wenn sqlSession geschlossen ist, wird der Cache geleert. Wie kann Caching zur Effizienzsteigerung genutzt werden?
Okay, im nächsten Artikel stellen wir Ihnen den Second-Level-Cache von mybatis vor.
Das Obige ist der vom Herausgeber eingeführte Mybatis-Cache der ersten Ebene. Ich hoffe, er wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!
Für ein tieferes Verständnis der Artikel zum Mybatis First-Level-Cache beachten Sie bitte die chinesische PHP-Website!