框架--Mybatis3
一.特殊符号处理
< <
> >
" "
' '
& &
除了可以使用上述转义字符外,还可以使<![CDATA[ ]]>用来包裹特殊字符。
二.mybatis 一级缓存二级缓存
1.为什么缓存
缓存:数据缓存,让数据离我们的执行程序更近,让程序能够快速的获取数据。
有缓存,查询流程:先从缓存中查数据,缓存中没有去数据库查询,查询到后把数据放到缓存中,下次直接从缓存中获取。
2.一级缓存
mybatis一级缓存,默认是SqlSession级别的,在同一个SqlSession中查询到数据,先缓存到Sqlsession对象中,第二次查询数据时,先从Sqlsession中查询,如果有直接返回,没有再去数据库查询。
一级缓存生命周期:
(1)开始于Sqlsession对象创建,结束于Sqlsession关闭。
(2)如果期间执行了新增、修改、删除操作也会清空当前Sqlsession对象中缓存的数据。
(3)调用sqlSession.clearCache(); 强制清空一切缓存数据
3.二级缓存
二级缓存是SqlSessionFactory级别的,可以让多个SqlSession共享数据。mybatis默认没有二级缓存,使用时需要配置开启。
如果开启了二级缓存当sqlsession关闭时,会将一级缓存中的数据存储到二级缓存中,其他的sqlsession就可以从二级缓存中查询到之前sqlsession查询到数据。
配置二级缓存:
(1)启用二级缓存
在SqlMapperConfig.xml 中启用二级缓存,如下代码所示,当cacheEnabled 设置为true时启用二级缓存,设置为false时禁用二级缓存。
<setting name="cacheEnabled" value="true"/>
(2)对象序列化
将所有的POJO类实现序列化接口Java.io.Serializable。
(3)配置映射文件
在Mapper映射文件中添加<cache/>,表示此mapper开启二级缓存。当SqlSeesion 关闭时,会将数据存入到二级缓存
测试:
三.Mybatis总结