1、MyBatis中的缓存
一,一级缓存
在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>
实体类要序列化;
2、MyBatis和Hibernate的比较(面试):
Mybatis 半自动化模式操作数据,hibenate完全面向对象操作数据
Mybatis运行的性能高于hibernate的性能
Mybatis开发速度低于hibernate的开发速度
Mybatis应用在互联网项目的开发,Hibernate用在传统的MIS系统开发