L'article précédent vous a présenté le cache de premier niveau mybatis. Les amis dans le besoin peuvent s'y référer.
Par rapport au cache de premier niveau, le cache de deuxième niveau a une portée plus grande et peut être partagé par plusieurs SqlSession.
De même, envoyer la même requête, SQL la recherchera d'abord dans le cache, puis interrogera la base de données s'il ne la trouve pas.
Chaque mappeur d'espace de noms aura son propre espace de cache.
Si les espaces de noms des deux mappeurs sont identiques, les données interrogées en exécutant le mappeur seront stockées dans le même cache de deuxième niveau.
De même, si une sqlSession exécute un commit, le le cache de deuxième niveau sera vidé.
Fichier de configuration (il est activé par défaut sans configuration) :
dans sqlMapConfig.xml :
<setting name="cacheEnabled" value="true"/>
dans le mapper.xml correspondant :
Si vous n'avez pas besoin du cache de deuxième niveau, vous pouvez désactiver le cache de deuxième niveau dans les paramètres
<select useCache="false"></select>
De cette façon à chaque fois Ils sont tous lus à partir de la base de données
Après avoir exécuté insert, update, delete, le cache sera rafraîchi (vider le cache) , vous pouvez le configurer pour qu'il ne s'actualise pas
Généralement non défini, le paramètre peut provoquer une lecture sale .
<insert flushCache="false"></insert>
Petit exemple :
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 = session3.getMapper(UserMapper.class); //第一次请求,查询id为1的用户 User user1 = mapper1.findUserById(1); System.out.println(user1); //close 将数据写入二级缓存 session1.close(); //清空二级缓存,UserMapper下的 user1.setUsername("mmm"); mapper3.updateUser(user1); session3.commit(); //第二次查询会从缓存中找 User user2 = mapper2.findUserById(1); System.out.println(user2); session2.close();
Notez ici les objets à mettre en cache. L'interface Serilisable doit être implémentée car ces données mises en cache peuvent être désérialisées et écrites sur le disque dur ou ailleurs.
Ce qui précède est le cache de deuxième niveau Mybatis introduit par l'éditeur. J'espère qu'il vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Je voudrais également vous remercier tous pour votre soutien au site Web PHP chinois !
Pour une compréhension plus approfondie des articles liés au cache de deuxième niveau de Mybatis, veuillez prêter attention au site Web PHP chinois !