一.特殊符號處理
<? ?<
>? ?>
"? ? "
'? ? ?'
&? ?&
除了可以使用上述轉義字符外,還可以使<![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總結