0 0

Mybatis的SqlSession.clearCache()不起作用5

mybatis3.0,mybatis3.2都试过了

调用了session.clearCache()之后还是会从缓存中取数据,除非完全禁用缓存

google了半天,也没找到有人遇到过clearCache无效的问题

不知道大家有没有遇到类似的情况?

2013年8月07日 19:18

1个答案 按时间排序 按投票排序

0 0

可以看下文档

引用
6.Local Cache

MyBatis uses two caches: a local cache and a 2nd level cache.

Each time a new session is created MyBatis creates a local cache and attaches it to the session. Any
query executed within the session will be stored in the local cache so further executions of the same
query with the same input parameters will not hit the database. The local cache is cleared upon
update, commit, rollback and close.

By default local cache data is used for the whole session duration. This cache is needed to resolve
circular references and to speed up repeated nested queries, so it can never be completely disabled but
you can configure the local cache to be used just for the duration of an statement execution by setting
localCacheScope=STATEMENT.


You can clear the local cache at any time calling:

      void clearCache()


session.clearCache()



个人理解clearCache清理的是所谓的一级缓存,是在执行insert,update,delete方法后会主动的执行清理。这个缓存是有mybatis自己进行维护的。因此一般是不需要手工进行处理的。

我猜你应该是使用了二级缓存导致你所描述的问题。即你在**mapper.xml中使用的了<cache/>标签。使用该标签后,默认开启mybatis的二级缓存,所以在你查询过程中即使你使用session.clearCache()清理了一级缓存(Local Cache )那么,二级缓存中还是存在。

如果不是这个问题,那你还是debug下,看下mybatis有没有什么具体内容输入。或者贴上你的代码,以便分析。

2013年8月07日 21:40

相关推荐

    SpringBoot+MyBatis+SqlSession

    在IT行业中,SpringBoot、MyBatis和SqlSession是三个非常关键的技术组件,它们共同构建了一个高效、便捷的Web应用程序开发环境。让我们深入探讨一下这三个技术及其在项目中的结合使用。 首先,SpringBoot是由...

    mybatisIntercept.zip

    2、在Mybatis.XML 配置以下节点用于SQL执行前进行拦截 解析得出Page对象的属性 &lt;!-- 拦截器数据库分页执行的类--&gt; &lt;plugin interceptor="sxtauthoritycenter.util.mybatisIntercept.PageInterceptor"&gt; &...

    mybatis3.x 整合Spring3.x jar包

    该jar包为最新的适配mybatis3.2.X及以上的版本。同时向下兼容mybatis的版本。mybatis整合spring jar包 mybatis-spring-1.2.3.jar

    spring mybatis 3.x 使用图文

    接着,配置`SqlSessionFactory`,这是MyBatis与Spring集成的核心组件,负责创建`SqlSession`,而`SqlSession`是执行SQL语句的基础。在配置文件中,通常会指定MyBatis的配置文件路径`configLocation`,以及是否启用...

    mybatis2020.zip

    如果同一个 SqlSession 中再次执行相同的查询,MyBatis 就会直接从缓存中获取数据,避免了重复的数据库访问,提高了性能。 一级缓存的工作原理如下: 1. 当 SqlSession 开始时,一级缓存被创建。 2. 执行 SQL 查询...

    mybatis01.zip

    MyBatis的核心概念包括XML配置、Mapper接口和SqlSession,这些是理解MyBatis工作原理的关键。 1. XML配置:MyBatis的配置文件定义了数据库连接信息、事务管理以及映射文件的位置。在mybatis01.zip中,可能包含了一...

    MyBatisDemo.zip

    `SqlSessionFactory`是MyBatis的核心组件,它负责创建`SqlSession`对象,`SqlSession`则用于执行SQL语句。在测试样例中,会有一个初始化过程来获取`SqlSessionFactory`,通常是通过`SqlSessionFactoryBuilder`构建...

    MyBatis入门.pdf

    MyBatis框架的作用是提供了一个规则,保证开发者遵循相同的方式开发程序,提倡“不要重复造轮子”,对基础功能进行封装。MyBatis环境配置是通过mybatis-config.xml核心配置文件来配置数据库环境信息的,采用XML格式...

    mybatis03.rar

    MyBatis通过`@Mapper`注解标记接口,并通过`SqlSessionFactory`生成`SqlSession`来执行SQL。 ```java @Mapper public interface UserMapper { User selectUserById(int id); } ``` 2. 动态SQL:MyBatis支持动态...

    mybatis笔记.zip

    4. **SqlSession**:SqlSession 是执行 SQL 的接口,它是线程不安全的,每次数据库操作都应该创建一个新的 SqlSession。在操作完成后,记得关闭 SqlSession,以释放资源。 5. **Mapper 接口与 XML 映射文件结合**:...

    SM整合(Spring、MyBatis).zip

    - SqlSessionFactory 是MyBatis的核心对象,用于创建SqlSession实例。在Spring中,通常使用 `SqlSessionFactoryBean` 创建,它会根据配置加载MyBatis的配置文件。 5. **Mapper接口和XML配置**: - MyBatis 允许...

    mybatis01.7z

    本地缓存默认开启,作用于单个SqlSession;二级缓存则是全局的,可以跨多个SqlSession共享数据。 7. **插件机制**:MyBatis允许开发者创建自定义拦截器,通过`@Intercepts`注解和`Signature`类定义拦截的执行点,...

    Mybatis讲义.rar

    7. **缓存机制**:Mybatis内置了两级缓存,一级缓存是SqlSession级别的,二级缓存则是全局性的,可以跨多个SqlSession共享数据。缓存可以提高查询性能,但需注意缓存更新策略。 8. **插件机制**:Mybatis允许开发...

    03 mybatis初级.rar

    9. **一级缓存与二级缓存**:MyBatis 默认启用一级缓存(SqlSession 级别),同一 SqlSession 中的相同 SQL 不会重复执行。二级缓存(全局级别)可配置,实现跨 SqlSession 的数据共享,提高性能。 10. **事务管理*...

    mybatis-3.1.1.jar mybatis-3.2.2.jar mybatis-3.2.7.jar

    例如,如果你的项目依赖于某个特定版本的MyBatis,那么你需要确保使用的是那个版本的jar,以防止版本不兼容导致的问题。 在MyBatis中,主要的概念包括SqlSessionFactory、SqlSession、Mapper接口和XML配置文件(或...

    MyBatis3.2.1.jar+MyBatis-Spring1.1.1.jar

    在SSM(Spring、SpringMVC、MyBatis)架构中,MyBatis和MyBatis-Spring的结合使用是必不可少的,它们为Java企业级应用提供了强大的数据访问支持。如果你需要最新的SSM框架组件,可以考虑更新这两个JAR包到更现代的...

Global site tag (gtag.js) - Google Analytics