org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException: com.wang.pojo.User
报错原因:在mybatis中使用二级缓存时候就必须需要将实体类序列化
<--使用了实体类User要求将实体类序列化-->
<update id="updateUser" parameterType="User">
update user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
序列化实体类:
package com.wang.pojo;
import lombok.Data;
import java.io.Serializable;
@Data
public class User implements Serializable {
private int id;
private String name;
private String pwd;
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
}
此外设置cash缓存的readonly属性默认为false,可读写缓存会通过序列化返回对象的拷贝,如果为只读状态是返回对象的引用
<mapper namespace="com.wang.dao.UserMapper">
<!--使用二级缓存-->
<cache readOnly="true"/>
<select id="queryUserById" resultType="User">
select * from user where id=#{id}
</select>
<update id="updateUser" parameterType="User">
update user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
</mapper>