El artículo anterior le presenta el caché de MyBatis Nivel 1. Los amigos necesitados pueden referirse a él.
En comparación con el caché de primer nivel, el caché de segundo nivel tiene un rango más amplio y puede ser compartido por múltiples SQLSessions.
Si envía la misma consulta, SQL primero buscará en el caché y luego consultará la base de datos si no se puede encontrar.
Cada mapeador de espacio de nombres tendrá su propio espacio para caché.
Si los espacios de nombres de los dos mapeadores son los mismos, los datos consultados al ejecutar el mapeador se almacenarán en el mismo caché de nivel 2.
Del mismo modo, si SQLSession se ejecuta y se ejecuta el confirmación, se borrará el caché secundario.
Archivo de configuración (también está habilitado de forma predeterminada sin configuración):
En sqlmapconfig.xml:
<setting name = "cacheenabled" value = "true"/>
En el mapper.xml correspondiente:
<cache/>
Si no necesita un caché secundario, puede deshabilitar el caché secundario en la configuración
<Seleccione useCache = "false"> </elect>
Esto se lee de la base de datos cada vez
Después de ejecutar insertar, actualizar, eliminar, el caché se actualizará (borrar el caché), y se puede configurar para no actualizar
Generalmente no establecido, la configuración puede causar lectura sucia.
<insertar flushcache = "false"> </sert>
Pequeños ejemplos:
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); // La primera solicitud es consultar al usuario con ID 1 User User1 = mApper1.FinduserById (1); System.out.println (User1); // Cerrar datos de escritura a la sesión de caché secundaria1.close (); // borrar el caché secundario, user1.setUsername ("mmm"); mapper3.updateuser (usuario1); sesión3.commit (); // La segunda consulta buscará usuario user2 = mApper2.FinduserById (1); System.out.println (user2); session2.close ();Tenga en cuenta que los objetos que se almacenarán en caché en el nivel 2 deben implementar la interfaz serilizable, porque estos datos en caché pueden estar deserializados y escritos en el disco duro o en otros lugares.
Lo anterior es el caché de MyBatis Nivel 2 presentados por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!