O artigo anterior apresenta o cache Mybatis Nível 1 para você. Amigos necessitados podem se referir a ele.
Comparado com o cache de primeiro nível, o cache de segundo nível possui uma faixa maior e pode ser compartilhado por múltiplas SQLSessions.
Se você enviar a mesma consulta, o SQL primeiro pesquisará no cache e, em seguida, consulte o banco de dados, se não puder ser encontrado.
Cada mapeador de namespace terá seu próprio espaço de cache.
Se os espaços para nome dos dois mapeadores forem iguais, os dados consultados executando o mapeador serão armazenados no mesmo cache de nível 2.
Da mesma forma, se o SQLSession for executado e o commit for executado, o cache secundário será limpo.
Arquivo de configuração (também é ativado por padrão sem configuração):
Em sqlmapconfig.xml:
<Configuração name = "Cacheenabled" value = "true"/>
No Mapper.xml correspondente:
<cache/>
Se você não precisar de um cache secundário, poderá desativar o cache secundário nas configurações
<select usecache = "false"> </select>
Isso é lido do banco de dados todas as vezes
Depois de executar a inserção, atualizar, excluir, o cache será atualizado (limpe o cache) e pode ser definido para não atualizar
Geralmente não está definido, a configuração pode causar leitura suja.
<inserir flushcache = "false"> </nsert>
Pequenos exemplos:
SQLSession Session1 = Factory.opensssion (); SQLSession Session2 = Factory.opensssion (); SQLSession Session3 = Factory.opensssion (); UserMApper Mapper1 = session1.getMapper (UserMApper.class); UsermApper Mapper2 = session2.GetMapper (UserMApper.class); UserMApper Mapper3 = session3.getMapper (UserMApper.class); // A primeira solicitação é consultar o usuário com ID 1 Usuário do usuário1 = mapper1.findUserById (1); System.out.println (user1); // fechar dados de gravação para o cache secundário session1.close (); // limpe o cache secundário, user1.setUserName ("mmm"); Mapper3.UpdateUser (User1); session3.Commit (); // A segunda consulta procurará o usuário do usuário2 = mapper2.FindUserById (1); System.out.println (user2); session2.close ();Observe que os objetos a serem armazenados em cache no nível 2 devem implementar a interface serilizável, porque esses dados em cache podem ser desserializados e gravados no disco rígido ou em outro lugar.
O exposto acima é o cache Mybatis Nível 2, apresentado a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!