一级缓存
在SqlSession范围内。当查询相同对象时,会使用缓存中的数据,而不会再次查询。
1、Mybatis默认开启了一级缓存
2、代码
public static void main(String[] args) throws IOException {
SqlSession session=MyBatisUtil.getSession();
User user = session.selectOne("cn.sxt.entity.UserMapper.selectUser", 1);
User user1 = session.selectOne("cn.sxt.entity.UserMapper.selectUser", 1);
System.out.println(user==user1);
session.close();
}
3、结果为true
二级缓存
(SqlSessionFactory范围内)
1、开启二级缓存
在核心配置文件中
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
Mapper配置中加
<cache/>
<mapper namespace="cn.sxt.entity.UserMapper">
<cache/>
<select id="selectUser" resultType="cn.sxt.entity.User">
select * from user where id = #{id}
</select>
</mapper>
实体类要序列化