关于MyBatis二级缓存问题:org.apache.ibatis.cache.CacheException: Error serializing object.

精尽 MyBatis 源码分析 —— 缓存模块 1. 概述 在优化系统性能时,优化数据库性能是非常重要的一个环节,而添加缓存则是优化数据库时最有效的手段之一。正确、合理地使用缓存可以将一部分数据库请求拦截在缓存这一层。 MyBatis 中提供了一级缓存和二级缓存,而这两级缓存都是依赖于基础支持层中的缓 存模块实现的。这里需要读者注意的是,MyBatis 中自带的这两级缓存与 MyBatis 以及整个应用是运行在同一个 JVM 中的,共享同一块堆内存。如果这两级缓存中的数据量较大, 则可能影响系统中其他功能的运行,所以当需要缓存大量数据时,优先考虑使用 R 阅读详情

错误描述:

在使用二级缓存时,报的错误,如图所示:

错误解决:

mapper在映射文件中,使用<cache>元素开启当前 mapper 的namespace 下的二级缓存,如下所示:

<cache eviction="LRU" flushInterval="30000" size="512" readOnly="true"/>

这样,mapper.xml下的SQL语句执行结束后,会将结果存储到它的二级缓存中。<cache>元素配置在<mapper>元素内,<cache>元素的属性含义如下:

属性描述
flushInterval 属性表示刷新间隔,可以设置为任意正整数,单位是毫秒。默认不设置,表示没有刷新间隔,仅仅调用语句时刷新缓存。
size 属性表示引用数目,可以被设置为任意正整数,默认值是1024。
readOnly 属性设置是否只读,true 表示只读,false 表示可读写。只读的缓存会给所有调用者返回缓存对象的相同实例,因此这些对象不能被修改,这提供了重要的性能优势。可读写的缓存会返回缓存对象的拷贝,这会慢一些,但是安全,因此默认值是false。
eviction 属性表示收回策略,有 LRU、 FIFO 、SOFT 、WEAK 等策略,默认值为LRU。LRU 表示最近最少使用策略,即移除最近最少使用的对象。FIFO表示先进先出策略,按对象进入缓存的顺序来移除。SOFT 表示软引用策略,移除基于垃圾回收器状态和软引用规则的对象。WEAK 表示弱引用策略,更积极地移除基于垃圾收集器状态和弱引用的规则的对象。

同时也要具备一个大前提,MyBatis 默认是没有开启二级缓存,需要在 MyBatis 的配置文件 mybatis-config.xml 中开启二级缓存,配置如下:

<!-- 开启二级缓存 -->
<settings>
    <setting name="cacheEnabled" value="true"/>
</settings>

需要注意的是,settings 元素要放在 properties 元素之后,typeAliases 元素之前,否则配置文件会报错。

再次执行测试类:

问题解决!

Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法 Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法 一、问题描述 写好配置文件用JUnit进行测试,一运行就报错: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.fendo.entity.Person with invalid ty 立即下载

相关推荐

HFSS的边界条件与激励方式

在电磁场理论学习中我们知道,电磁场问题的求解都归结于麦克斯韦(Maxwell)方程组的求解,在HFSS中波动方程的求解同样是由微分形式的麦克斯韦方程推导出来的。而边界条件定义了求解区域的边界以及不同物体交界处的电磁场特性,是求解麦克斯韦方程的基础。 只有在假定场矢量是单值、有界、并且沿空间连续分布的前提下,微分形式的麦克斯韦方程组才是有效的;而在求解区域的边界,不同介质的交界处和场源处,场矢量是不连续的,那么场的导数也就失去了意义。 边界条件就是定义跨越不连续边界处的电磁场特性,因此,正确地理解、定义并

ASH_GUARDIAN的博客 1万+

初学MyBatis缓存--二级缓存

二级缓存 MyBatis的二级缓存是mapper级别的缓存,多个SqlSession共用二级缓存,它们使用同一个mapper的sql语句操作数据库,获得的数据会存在二级缓存中。 MyBatis默认没有开启二级缓存,要在mybatis的配置文件中开启。配置如下: <settings> <setting name="cacheEnable" value="true"/...

weixin_43942512的博客 262

Unity微信小游戏资源管理实战:YooAsset的Tag与Group策略精讲

本文深入解析了在Unity微信小游戏开发中,如何利用YooAsset的Tag与Group策略进行精细化资源管理。通过实战案例,详细阐述了如何通过Tag实现核心资源的必下与额外资源的按需加载,并借助Collector的合理打包策略,实现热更新包体最小化,从而有效解决加载慢、更新流量大的痛点,最终提升玩家体验。

weixin_29012677的博客 270

mybatis缓存机制详解(一)——Cache

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34326179的博客 593

FPGA实战:给你的UART串口通信加上Verilog奇偶校验位(Modelsim仿真验证)

本文详细介绍了如何在FPGA中实现UART串口通信的Verilog奇偶校验功能,包括发送端校验位生成和接收端校验检测的设计与实现。通过Modelsim仿真验证,确保数据传输的可靠性,适用于嵌入式系统和数字通信领域。

weixin_34216614的博客 341

Python爬虫实战:全面采集国家自然科学基金项目数据的全流程指南

国家自然科学基金委员会(NSFC)支持基础研究、应用基础研究,是我国科研投入的核心项目之一。公开的项目数据包括项目名称、负责人、资助金额、年度、单位等,具备极高科研和数据分析价值。requests:基础HTTP请求库,简单直观:异步HTTP请求库,适合大规模并发:HTML解析,提取数据:处理JavaScript渲染网页pandas:数据分析与清洗:数据库存储:重试机制实现。

2201_76125261的博客 753

Mybatis源码学习——二级缓存

mybatis二级缓存,二级缓存失效情况,Cache

weixin_50545075的博客 324

数据分享|1961-2017年中国0.25°×0.25° 逐日地表水文数据集(VIC-CN05.1)

其中,全球径流中心(University of New Hampshire and Global Runoff Data Centre, UNH/GRDC)的复合产流场集成了观测的河道径流和水量平衡模式模拟的地表和地下径流,常被用来评估模拟的径流。在长白山、海北灌丛和千烟洲通量站,模拟与观测的逐月潜热通量的平均NSE为0.61。VIC-CN05.1受益于较准确的大气驱动场、先进的地表水文参数化方案以及更真实丰富的土壤信息,可作为中国水文气象研究的参照数据,用于陆面模式的评估和长期的趋势分析等。

J_Giser的博客 1830

MyBatis二级缓存异常 org.apache.ibatis.cache.CacheException

CacheException 启动二级缓存:在mybatis全局配置文件中配置 <settings> <!--启动二级缓存--> <setting name="cacheEnabled" value="true"/> </settings> 在Mapper.xml的配置文件中加入cache标签表示使用二级缓存。 <!--使用二级缓存--> <cache/> 需要被二级缓存的对象必须要实现java

lesliewongjie 2357

SAP-MM:SAP MM(物料管理)模块 的系统化学习计划

SAP MM模块的系统化学习计划

baidu_35680696的博客 1546

Coze智能体开发:开始使用扣子

扣子全新升级!它不仅能帮你办公、做视频、写代码,更具备自主任务执行、探索进化等能力,真正从“陪你聊”走向“帮你干活”。

王国平的博客 120

org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableExc

org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException: com.baizhi.entity.User at org.apache.ibatis.cache.decorators.SerializedCache.serialize(Seria...

zoxm 3555

【35】软考软件设计师——设计模式代码填空(C++版)满分精讲|第5/6题二选一必考

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第35篇,聚焦下午选做题**第5/6题C++版设计模式代码填空**,与上一篇Java版形成双子配套,单题分值稳定12~15分。全文超4000字深度拆解C++独有核心考点:虚函数/纯虚函数、构造与析构函数规范、继承权限、模板类编程在设计模式中的应用;精讲单例、工厂、策略、观察者、适配器五大高频模式的C++专属代码写法,标注所有填空核心点位、语法陷阱、内存安全规范

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 543

org.apache.ibatis.cache.CacheException: Error serializing object. Mybatis二级缓存报错的两种解决办法

先看下官方文档导致这个问题的原因: readOnly(只读)属性可以被设置为 true 或 false。只读的缓存会给所有调用者返回缓存对象的相同实例。 因此这些对象不能被修改。这就提供了可观的性能提升。而可读写的缓存会(通过序列化)返回缓存对象的拷贝。 速度上会慢一些,但是更安全,因此默认值是 false。 也就是说,默认情况下,出于安全考虑,Mybatis将缓存设置成可读写的,然后通过序列化的方式返回给我们缓存的对象拷贝。 如果我们的对象没有实现可序列化的接口就会抛出 org.apache.ibat

kzc5335475的博客 935

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MyBatis错误:org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerial

org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException: com.ljh.pojo.Blog 错误原因:解决方案:(cache其他参数)补充: 官文缓存一节提到,当你在XXMapper.xml中只是简单配置了二级缓存之后,不显示加上readOnly="true",那么默认的 <mapper namespace="com.xx.xx.XXMapper

qq_38555932的博客 907

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MyBatis二级缓存异常Caused by: org.apache.ibatis.cache.CacheException: Error serializing object

今天是5月8号,因为这两天的考核内容有涉及到模糊查询的知识,于是就翻了翻之前的项目,发现模糊查询功能实现不了,一直报错(明明记得之前还可以)。因而又找了大半天的错。

农专猿的博客 383

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableExce

org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException: com.wang.pojo.User 报错原因:在mybatis中使用二级缓存时候就必须需要将实体类序列化 <--使用了实体类User要求将实体类序列化--> <update id="updateUser" parameterType="User"> .

qq_41451283的博客 991

Mybatis 报错二级缓存org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotS

对执行调用进行SQL操作的类做导入。报错指向的是Ccc这个类,那就要到这个类里,对这个类。

qq_45258618的博客 489

mybatis plus二级缓存序列化存储失败报错解决办法:org.apache.ibatis.cache.CacheException: Error serializing object.

出现错误通常是由于 MyBatis 在尝试将对象序列化存储到缓存中时失败了。这个错误通常是由于对象不是可序列化的(即实现了接口)。在 Java 中,为了让一个对象可以序列化,你需要确保这个对象实现了接口。

学亮编程手记 683

org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableExc

错误: org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException: com.wei.mybatis.entity.Goods 显示序列化对象时出错 因为我用到了mybatis二级缓存 在mybatis中使用二级缓存时候就必须需要将实体类序列化implements Serializable, 我的mapper文件使用了<cache/.

我的青春一去不复返 349

报错:org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializable

报错:org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializable

weixin_46150099的博客 739

MyBatis 二级缓存

/** * 测试二级缓存, * 二级缓存默认是关闭的,如果想使用二级缓存需要做如下两边操作: * 1.开启二级缓存的总开关(在mybatis的配置文件中设置),这步可以不做,因为默认就开启的 * &lt;!-- * A:开启二级缓存的总开关,由于默认值就是true,所以可以不配 * 注意:如果同时设置了settin...

amazing_Code的博客 235

mybatis缓存

Mybatis 缓存    正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 1. 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。 2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCac

qq_29663071的博客 528

实战讲解MyBatis缓存:一级缓存和二级缓存(图+文+源码)

(1)MyBatis一级缓存生效的条件为同一个SqlSession;二级缓存生效的条件为同一个namespace; (2)一级缓存生效需要使用@Transactional注解,保证同一事务中的操作在同一个SqlSesion中,因为,MyBatis在设计时,不在同一事务中SqlSession会强制自动提交(commit),每次操作都会新建SqlSession,这样就无法保证所有操作在同一个SqlSession中,破坏了L1级缓存的生效条件; (3)二级缓存生效的范围是同一份映射文件,即同一个namespace

天然玩家的博客 1116

MyBatis源码解析(四) Cache模块

MyBatis的二级缓存 MyBatis的缓存分为一级缓存和二级缓存,一级缓存是 SqlSession 级别的缓存,二级缓存是mapper级别的缓存。但是这篇博客主要是介绍mybaits中缓存接口和缓存键接口,以及一些缓存实现。 之前写过一篇博客简单介绍了一下Hibernate的两级缓存。 链接: https://blog.csdn.net/Letmetell_you/article/detail...

Let_me_tell_you的博客 1211

(十一)SpringBoot2.0整合Ehcache缓存技术

文章目录一. ehcache整合1. pom文件依赖2. 新增Ehcache.xml文件3. 启动类加上注解4. 在类或者方法上加入缓存二. 项目演示三. Ehcache缓存清除四. 源码下载 一. ehcache整合 1. pom文件依赖 默认情况下,Spring已经集成了cache的依赖,我亲自测试过,移除这个两个依赖,也可以整合cache。 <!-- caching --> ...

Autism、陌亡 3361
上一篇: Annotation type expected 预期注释类型
下一篇: 2021-07-12 一个Web服务器对请求进行相应的典型步骤
We Never say die
博客等级 码龄7年 12粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

We Never say die

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值