Mybatis 二级缓存

今天在使用 mybatis 时想要开启二级缓存,结果报错了,所以来记录一下

1
org.apache.ibatis.cache.CacheException: Error serializing object.  Cause: java.io.NotSerializableException: exam.pojo.xxx

可以看到报错信息是序列化的问题那么只需要在对应的实体类中实现序列化接口 Serializable 就行(我这里使用了 Lombok)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package exam.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class xxx implements Serializable {
private String attr0;
private int attr1;
}

如果还不行,那就改一下对应的 mapper 的 <cache /> 标签中的属性,跟着 官方文档 走就好了

1
2
3
4
5
<cache
eviction="FIFO"
flushInterval="60000"
size="512"
readOnly="true"/>

参考自以下内容
mybatis 官方文档:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#cache