L'article précédent vous présente le cache MyBatis Level 1. Les amis dans le besoin peuvent y faire référence.
Par rapport au cache de premier niveau, le cache de deuxième niveau a une plage plus grande et peut être partagé par plusieurs SQLSESIONS.
Si vous envoyez la même requête, SQL recherchera d'abord dans le cache, puis interrogez la base de données si elle ne peut être trouvée.
Chaque mappeur d'espace de noms aura son propre espace de cache.
Si les espaces de noms des deux mappeurs sont les mêmes, les données interrogées en exécutant le mappel seront stockées dans le même cache de niveau 2.
De même, si SQLSession est exécutée et que la validation est exécutée, le cache secondaire sera effacé.
Fichier de configuration (il est également activé par défaut sans configuration):
Dans sqlmapconfig.xml:
<setting name = "cacheenabled" value = "true" />
Dans le mappeur correspondant.xml:
<cache/>
Si vous n'avez pas besoin d'un cache secondaire, vous pouvez désactiver le cache secondaire dans les paramètres
<sélectionnez UseCache = "false"> </lect>
Ceci est lu dans la base de données à chaque fois
Après avoir exécuté l'insert, mettre à jour, supprimer, le cache sera actualisé (effacer le cache) et il peut être défini pour ne pas actualiser
Généralement non réglé, le réglage peut provoquer une lecture sale.
<insert flushcache = "false"> </sert>
Petits exemples:
SqlSession Session1 = Factory.OpenSession (); SqlSession Session2 = Factory.OpenSession (); SqlSession Session3 = Factory.OpenSession (); UserMapper Mapper1 = Session1.getMapper (userMapper.class); UserMapper Mappe 2 = session2.getMapper (userMapper.class); UserMapper Mappe 3 = Session3.GetMapper (userMapper.class); // La première demande consiste à interroger l'utilisateur avec l'identifiant 1 utilisateur utilisateur1 = mAper1.FindUserById (1); System.out.println (User1); // Fermez les données d'écriture à la session de cache secondaire1.close (); // effacer le cache secondaire, user1.sesername ("mmm"); MAPPER3.UPDATEUSER (User1); session3.Commit (); // La deuxième requête recherchera l'utilisateur utilisateur2 = masper2.FindUserById (1); System.out.println (User2); session2.close ();Notez que les objets à mettre en cache au niveau 2 doivent implémenter l'interface semizable, car ces données en cache peuvent être désérialisées et écrites sur le disque dur ou ailleurs.
Ce qui précède est le cache MyBatis Level 2 qui vous est présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!