search
HomeJavajavaTutorialDetailed explanation of MyBatis code examples on second-level cache issues

This article mainly introduces MyBatis's issue with the second-level cache. The second-level cache is a Mapper-level cache. Multiple sqlSession operates the same Mapper, and its second-level cache It can be shared.

MyBatis provides first-level cache and second-level cache. The first-level cache is a sqlSession-level cache. The caches between different sqlSession do not affect each other. The second-level cache is a Mapper-level cache. Multiple sqlSession operates on the same Mapper, and its second-level cache can be shared.

MyBatis has a variety of second-level cache solutions to choose from. Among them, the support for Memcached is relatively mature. We will take Memcached as an example to introduce the integration with the spring project.

Use configuration

Configure pom.xml and add dependencies.

<dependencies>
 ...
 <dependency>
  <groupId>org.mybatis.caches</groupId>
  <artifactId>mybatis-memcached</artifactId>
  <version>1.0.0</version>
 </dependency>
 ...
</dependencies>

Global switch

<settings>
  <setting name="cacheEnabled" value="true"/>
</settings>

Configure the mapper.xml that needs to be cached

The second-level cache is Mapper level, you can Enable second-level cache for specific mapper.xml.

<mapper namespace="org.acme.FooMapper">
 <cache type="org.mybatis.caches.memcached.MemcachedCache" />
</mapper>

After it is turned on, all select statements in the mapper will be cached by default. All insert, update, and delete statements under this namespace will cause the cache in the space to be cleared.

Cache can be disabled for a specific statement.

 <select id="retObj" resultMap="results" useCache="false" >
   select id, name, sex from employee  
 </select>

You can also trigger a refresh action for a certain statement (default corresponds to all insert, update, delete statements).

 <select id="retObj" resultMap="results" flushCache="true" >
   select id, name, sex from employee  
 </select>

Configuration parameters are set in memcached.properties. If missing, the default settings are used.

The following are the configuration parameters:

If you need to record the cache operation log, you can achieve it by the following configuration

<mapper namespace="org.acme.FooMapper">
 <cache type="org.mybatis.caches.memcached.LoggingMemcachedCache" />
 ...
</mapper>

Notes

Classes cached in Memcached need to implement the Serializable interface, otherwise the error java.io.NotSerializableException will be reported.

Second-level cache application scenarios

  1. It is recommended to use the second-level cache for data with high query frequency and low change frequency.

  2. For query requests that access a lot and users do not have high requirements for real-time query results, mybatis second-level caching technology can be used to reduce database access and improve access speed. Business scenarios such as : Time-consuming statistical analysis SQL, telephone bill query SQL, etc.

The implementation method is as follows:

By setting the refresh interval, mybatis automatically clears the cache every period of time, according to data changes Frequency setting cache refresh interval flushInterval, for example, set to 30 minutes, 60 minutes, 24 hours, etc., depending on needs.

mybatis limitations

Mybatis second-level cache is not good at fine-grained data level caching.

For example, the following requirements: cache product information. Due to the large number of product information query visits, users are required to query the latest product information every time. At this time, if you use the second-level cache of mybatis It is impossible to achieve that when a product changes, only the cache information of the product will be refreshed without refreshing the information of other products, because the second-level cache area of ​​​​mybaits is divided in units of mappers. When the information of a product changes, all products will be refreshed. All cached data of the message are cleared. Solving such problems requires targeted caching of data based on needs at the business layer.

The above is the detailed content of Detailed explanation of MyBatis code examples on second-level cache issues. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Java Platform Independence: Differences between OSJava Platform Independence: Differences between OSMay 16, 2025 am 12:18 AM

There are subtle differences in Java's performance on different operating systems. 1) The JVM implementations are different, such as HotSpot and OpenJDK, which affect performance and garbage collection. 2) The file system structure and path separator are different, so it needs to be processed using the Java standard library. 3) Differential implementation of network protocols affects network performance. 4) The appearance and behavior of GUI components vary on different systems. By using standard libraries and virtual machine testing, the impact of these differences can be reduced and Java programs can be ensured to run smoothly.

Java's Best Features: From Object-Oriented Programming to SecurityJava's Best Features: From Object-Oriented Programming to SecurityMay 16, 2025 am 12:15 AM

Javaoffersrobustobject-orientedprogramming(OOP)andtop-notchsecurityfeatures.1)OOPinJavaincludesclasses,objects,inheritance,polymorphism,andencapsulation,enablingflexibleandmaintainablesystems.2)SecurityfeaturesincludetheJavaVirtualMachine(JVM)forsand

Best Features for Javascript vs JavaBest Features for Javascript vs JavaMay 16, 2025 am 12:13 AM

JavaScriptandJavahavedistinctstrengths:JavaScriptexcelsindynamictypingandasynchronousprogramming,whileJavaisrobustwithstrongOOPandtyping.1)JavaScript'sdynamicnatureallowsforrapiddevelopmentandprototyping,withasync/awaitfornon-blockingI/O.2)Java'sOOPf

Java Platform Independence: Benefits, Limitations, and ImplementationJava Platform Independence: Benefits, Limitations, and ImplementationMay 16, 2025 am 12:12 AM

JavaachievesplatformindependencethroughtheJavaVirtualMachine(JVM)andbytecode.1)TheJVMinterpretsbytecode,allowingthesamecodetorunonanyplatformwithaJVM.2)BytecodeiscompiledfromJavasourcecodeandisplatform-independent.However,limitationsincludepotentialp

Java: Platform Independence in the real wordJava: Platform Independence in the real wordMay 16, 2025 am 12:07 AM

Java'splatformindependencemeansapplicationscanrunonanyplatformwithaJVM,enabling"WriteOnce,RunAnywhere."However,challengesincludeJVMinconsistencies,libraryportability,andperformancevariations.Toaddressthese:1)Usecross-platformtestingtools,2)

JVM performance vs other languagesJVM performance vs other languagesMay 14, 2025 am 12:16 AM

JVM'sperformanceiscompetitivewithotherruntimes,offeringabalanceofspeed,safety,andproductivity.1)JVMusesJITcompilationfordynamicoptimizations.2)C offersnativeperformancebutlacksJVM'ssafetyfeatures.3)Pythonisslowerbuteasiertouse.4)JavaScript'sJITisles

Java Platform Independence: Examples of useJava Platform Independence: Examples of useMay 14, 2025 am 12:14 AM

JavaachievesplatformindependencethroughtheJavaVirtualMachine(JVM),allowingcodetorunonanyplatformwithaJVM.1)Codeiscompiledintobytecode,notmachine-specificcode.2)BytecodeisinterpretedbytheJVM,enablingcross-platformexecution.3)Developersshouldtestacross

JVM Architecture: A Deep Dive into the Java Virtual MachineJVM Architecture: A Deep Dive into the Java Virtual MachineMay 14, 2025 am 12:12 AM

TheJVMisanabstractcomputingmachinecrucialforrunningJavaprogramsduetoitsplatform-independentarchitecture.Itincludes:1)ClassLoaderforloadingclasses,2)RuntimeDataAreafordatastorage,3)ExecutionEnginewithInterpreter,JITCompiler,andGarbageCollectorforbytec

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool