MyBatis基础回顾及高级应用
MyBatis:
1.基于ORM,ORM全称:标识对象-关系映射的缩写,实体类与映射表建立关联关系
2.半自动,支持sql优化,Hibernate全自动基于ORM,弊端:不支持sql优化。
3.轻量级的持节层框架,所需要的资源比较少称为轻量级
优势:半自动化的持久层框架,核心sql自己优化,sql和java编码分开,功能边界清晰。
mybatis缓存
一级缓存:session级别的缓存 ,其key为:statementid,params,boundSql,rowBounds,value值为:查询出来的结果对象
//做增删改操作,并进行了事务提交,就是刷新一级缓存
sqlSession.commit();
//手动刷新一级缓存
sqlSession.clearCache();
二级缓存:Mapper(namespace)级别的缓存,
需要我们手动开启二级缓存
1.xml开启:
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
2.注解开启:@CacheNamespace //开启二级缓存
二级缓存缓存中的数据,并不是一个对象,地址是不一样的。
禁用二级缓存针对当前sql
1.xml禁用:useCache=false可以禁⽤当前select语句的⼆级缓存
select * from user where id=#{id}
2.注解禁用:@Options(useCache = false)
开启了⼆级缓存后,还需要将要缓存的pojo实现Serializable接⼝,为了将缓存数据取出执⾏反序列化操作,因为⼆级缓存数据存储介质多种多样,不⼀定只存在内存中,有可能存在硬盘中,如果我们要再取这个缓存的话,就需要反序列化了。所以mybatis中的pojo都去实现Serializable接⼝