详解MyBatis关于二级缓存问题的代码实例
本篇文章主要介绍了MyBatis关于二级缓存问题,二级缓存是Mapper级别的缓存,多个sqlSession操作同一个Mapper,其二级缓存是可以共享的。
MyBatis提供一级缓存和二级缓存,其中一级缓存是sqlSession级别的缓存,不同的sqlSession之间的缓存互不影响。二级缓存是Mapper级别的缓存,多个sqlSession操作同一个Mapper,其二级缓存是可以共享的。
MyBatis有多种二级缓存方案可供选择。其中对Memcached的支持较为成熟,现以Memcached为例介绍与spring项目的集成。
使用配置
配置pom.xml,添加依赖。
<dependencies> ... <dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-memcached</artifactId> <version>1.0.0</version> </dependency> ... </dependencies>
全局开关
<settings> <setting name="cacheEnabled" value="true"/> </settings>
配置需要缓存的mapper.xml
二级缓存是Mapper级别的,可以针对具体的mapper.xml开启二级缓存。
<mapper namespace="org.acme.FooMapper"> <cache type="org.mybatis.caches.memcached.MemcachedCache" /> </mapper>
开启后,则mapper中所有的select语句默认都将被缓存,此命名空间下所有insert、update、delete语句将会导致空间下的缓存被清空。
可以针对具体某条语句禁用缓存。
<select id="retObj" resultMap="results" useCache="false" > select id, name, sex from employee </select>
也可针对某条语句触发刷新动作(默认对应所有插入、更新、删除语句)。
<select id="retObj" resultMap="results" flushCache="true" > select id, name, sex from employee </select>
配置参数在memcached.properties中设置,如果缺失则使用缺省设置。
以下是配置参数:
如果需要记录cache操作日志,可由如下配置实现
<mapper namespace="org.acme.FooMapper"> <cache type="org.mybatis.caches.memcached.LoggingMemcachedCache" /> ... </mapper>
缓存在Memcached中的类需要实现Serializable接口,否则会报错java.io.NotSerializableException。
二级缓存应用场景
对查询频率高,变化频率低的数据建议使用二级缓存。
对于访问多的查询请求且用户对查询结果实时性要求不高,此时可采用mybatis二级缓存技术降低数据库访问量,提高访问速度,业务场景比如:耗时较高的统计分析sql、电话账单查询sql等。
实现方法如下:
通过设置刷新间隔时间,由mybatis每隔一段时间自动清空缓存,根据数据变化频率设置缓存刷新间隔flushInterval,比如设置为30分钟、60分钟、24小时等,根据需求而定。
mybatis局限性
mybatis二级缓存对细粒度的数据级别的缓存实现不好。
比如如下需求:对商品信息进行缓存,由于商品信息查询访问量大,但是要求用户每次都能查询最新的商品信息,此时如果使用mybatis的二级缓存就无法实现当一个商品变化时只刷新该商品的缓存信息而不刷新其它商品的信息,因为mybaits的二级缓存区域以mapper为单位划分,当一个商品信息变化会将所有商品信息的缓存数据全部清空。解决此类问题需要在业务层根据需求对数据有针对性缓存。
Atas ialah kandungan terperinci 详解MyBatis关于二级缓存问题的代码实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

iBatis vs. MyBatis: Mana yang patut anda pilih? Pengenalan: Dengan perkembangan pesat bahasa Java, banyak rangka kerja kegigihan telah muncul. iBatis dan MyBatis ialah dua rangka kerja kegigihan yang popular, kedua-duanya menyediakan penyelesaian capaian data yang mudah dan cekap. Artikel ini akan memperkenalkan ciri dan kelebihan iBatis dan MyBatis, dan memberikan beberapa contoh kod khusus untuk membantu anda memilih rangka kerja yang sesuai. Pengenalan kepada iBatis: iBatis ialah rangka kerja kegigihan sumber terbuka

Tafsiran teg SQL dinamik MyBatis: Penjelasan terperinci tentang penggunaan teg Set MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik Ia menyediakan banyak teg SQL dinamik dan boleh membina pernyataan operasi pangkalan data secara fleksibel. Antaranya, tag Set ialah tag yang digunakan untuk menjana klausa SET dalam kenyataan UPDATE, yang sangat biasa digunakan dalam operasi kemas kini. Artikel ini akan menerangkan secara terperinci penggunaan teg Set dalam MyBatis dan menunjukkan kefungsiannya melalui contoh kod tertentu. Apakah itu Set tag Set tag digunakan dalam MyBati

JPA dan MyBatis: Analisis Perbandingan Fungsi dan Prestasi Pengenalan: Dalam pembangunan Java, rangka kerja kegigihan memainkan peranan yang sangat penting. Rangka kerja kegigihan biasa termasuk JPA (JavaPersistenceAPI) dan MyBatis. Artikel ini akan menjalankan analisis perbandingan fungsi dan prestasi kedua-dua rangka kerja dan menyediakan contoh kod khusus. 1. Perbandingan fungsi: JPA: JPA ialah sebahagian daripada JavaEE dan menyediakan penyelesaian kegigihan data berorientasikan objek. Ia diluluskan anotasi atau X

Beberapa cara untuk melaksanakan pernyataan pemadaman kelompok dalam MyBatis memerlukan contoh kod khusus Dalam beberapa tahun kebelakangan ini, disebabkan oleh peningkatan jumlah data, operasi kelompok telah menjadi bahagian penting dalam operasi pangkalan data. Dalam pembangunan sebenar, kita selalunya perlu memadamkan rekod dalam pangkalan data secara berkelompok. Artikel ini akan menumpukan pada beberapa cara untuk melaksanakan pernyataan padam kelompok dalam MyBatis dan memberikan contoh kod yang sepadan. Gunakan teg foreach untuk melaksanakan pemadaman kelompok MyBatis menyediakan teg foreach, yang boleh melintasi set dengan mudah.

Penjelasan terperinci tentang cara menggunakan pernyataan pemadaman kumpulan MyBatis memerlukan contoh kod khusus Pengenalan: MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik yang menyediakan fungsi operasi SQL yang kaya. Dalam pembangunan projek sebenar, kami sering menghadapi situasi di mana data perlu dipadamkan dalam kelompok. Artikel ini akan memperkenalkan secara terperinci cara menggunakan pernyataan pemadaman kumpulan MyBatis, dan melampirkan contoh kod tertentu. Senario penggunaan: Apabila memadamkan sejumlah besar data dalam pangkalan data, adalah tidak cekap untuk melaksanakan kenyataan padam satu demi satu. Pada ketika ini, anda boleh menggunakan fungsi pemadaman kelompok MyBatis

Penjelasan terperinci tentang mekanisme caching MyBatis: Baca prinsip storan cache dalam satu artikel Pengenalan Apabila menggunakan MyBatis untuk capaian pangkalan data, caching ialah mekanisme yang sangat penting, yang boleh mengurangkan capaian kepada pangkalan data dan meningkatkan prestasi sistem dengan berkesan. Artikel ini akan memperkenalkan mekanisme caching MyBatis secara terperinci, termasuk klasifikasi cache, prinsip penyimpanan dan contoh kod khusus. 1. Klasifikasi cache Cache MyBatis terbahagi kepada dua jenis: cache peringkat pertama dan cache peringkat kedua. Cache peringkat pertama ialah cache peringkat SqlSession

Penjelasan terperinci tentang cache peringkat pertama MyBatis: Bagaimana untuk meningkatkan kecekapan capaian data? Semasa proses pembangunan, capaian data yang cekap sentiasa menjadi salah satu fokus pengaturcara. Untuk rangka kerja lapisan kegigihan seperti MyBatis, caching ialah salah satu kaedah utama untuk meningkatkan kecekapan capaian data. MyBatis menyediakan dua mekanisme caching: cache peringkat pertama dan cache peringkat kedua. Cache peringkat pertama didayakan secara lalai. Artikel ini akan memperkenalkan mekanisme cache peringkat pertama MyBatis secara terperinci dan menyediakan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik.

Analisis mekanisme caching MyBatis: Perbezaan dan aplikasi cache peringkat pertama dan cache peringkat kedua Dalam rangka kerja MyBatis, caching ialah ciri yang sangat penting yang boleh meningkatkan prestasi operasi pangkalan data dengan berkesan. Antaranya, cache tahap pertama dan cache tahap kedua adalah dua mekanisme caching yang biasa digunakan dalam MyBatis. Artikel ini akan menganalisis perbezaan dan aplikasi cache peringkat pertama dan cache peringkat kedua secara terperinci, dan memberikan contoh kod khusus untuk digambarkan. 1. Cache Tahap 1 Cache tahap 1 juga dipanggil cache setempat Ia didayakan secara lalai dan tidak boleh dimatikan. Cache tahap pertama ialah SqlSes
