Mybatis使用--二级缓存

本文介绍如何在基于Maven的项目中启用并使用MyBatis的二级缓存功能,通过具体步骤和示例代码展示了如何配置MyBatis以提高查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本实例是基于maven的项目。

(1)需要添加的maven依赖

 

        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- mybatis/spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>


(2)在Mybatis的配置文件(mybatis.xml)中开启缓存功能

 

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 全局映射器启用缓存 -->
        <setting name="cacheEnabled" value="true" />
    </settings>
</configuration>

(3)在需要开启缓存功能的mapper文件中添加缓存

 

 

<!--添加缓存-->
    <cache
            eviction="LRU"
            flushInterval="60000"
            size="1024"
            readOnly="true"
    />

 

 

(4)进行单元测试

 

   @Test
    public void findUser() throws Exception {
        logger.debug("the user is "+userMapper.getUsersByName("zhangfei"));
        logger.debug("the user is "+userMapper.getUsersByName("zhangfei"));
//        userMapper.updateUser(new User("张三丰",11,"zsf123",1));
    }


(5)输出结果

2017-05-12 15:35:24.904 [main] WARN  net.sf.ehcache.config.ConfigurationFactory - No configuration found. Configuring ehcache from ehcache-failsafe.xml  found in the classpath: jar:file:/E:/maven/net/sf/ehcache/ehcache/2.10.1/ehcache-2.10.1.jar!/ehcache-failsafe.xml
2017-05-12 15:35:25.669 [main] DEBUG org.mybatis.spring.SqlSessionFactoryBean - Scanned package: 'com.hongtu.entity' for aliases
2017-05-12 15:35:25.692 [main] DEBUG org.mybatis.spring.SqlSessionFactoryBean - Parsed configuration file: 'class path resource [conf/mybatis.xml]'
2017-05-12 15:35:25.732 [main] DEBUG org.mybatis.spring.SqlSessionFactoryBean - Parsed mapper file: 'file [E:\MySelf\SpringDemo_hongtu_01\target\classes\mapper\UserMapper.xml]'
2017-05-12 15:35:26.984 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
2017-05-12 15:35:27.000 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@bcfe29c] was not registered for synchronization because synchronization is not active
2017-05-12 15:35:27.000 [main] DEBUG org.mybatis.spring.transaction.SpringManagedTransaction - JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@38f981b6] will not be managed by Spring
2017-05-12 15:35:27.000 [main] DEBUG com.hongtu.mapper.UserMapper.getUsersByName - ooo Using Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@38f981b6]
2017-05-12 15:35:27.000 [main] DEBUG com.hongtu.mapper.UserMapper.getUsersByName - ==>  Preparing: select * from user where name=?; 
2017-05-12 15:35:27.031 [main] DEBUG com.hongtu.mapper.UserMapper.getUsersByName - ==> Parameters: zhangfei(String)
2017-05-12 15:35:27.047 [main] DEBUG com.hongtu.mapper.UserMapper.getUsersByName - <==      Total: 0
2017-05-12 15:35:27.047 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@bcfe29c]
2017-05-12 15:35:27.047 [main] DEBUG com.hongtu.test.TestUser - the user is null
2017-05-12 15:35:27.047 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
2017-05-12 15:35:27.047 [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@60194904] was not registered for synchronization because synchronization is not active
2017-05-12 15:35:27.047 [main] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@60194904]
2017-05-12 15:35:27.047 [main] DEBUG com.hongtu.test.TestUser - the user is null

 

 

 

由以上可以看出,执行了两次查询,但是最终只与数据库交互了一次。

注意:如果如果在一个mapper文件中,针对某些查询我们不想要缓存,仅仅需要将useCache设置成false即可。

具体代码参考gitHub地址:mybatis二级缓存使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值