一、創建與數據庫表對應的實體類
public class User implements Serializable {
private int id;
private String username;
private String phone;
...
}
二、創建持久層接口
public interface IUserDao {
User findById(Integer userId);
}
三、創建持久層接口的映射文件
<mapper namespace="chu.yi.bo.dao.IUserDao">
<select id="findById" resultType="chu.yi.bo.domain.User" parameterType="int">
select * from user where id = #{uid};
</select>
</mapper>
四、一級緩存
IUserDao iUserDao = session.getMapper(IUserDao.class);
User user1 = iUserDao.findById(1);
User user2 = iUserDao.findById(1);
System.out.println(user1 == user2);
執行兩次查詢,查詢同一條記錄,但是隻執行了一次 SQL 查詢,一級緩存是 SqlSession 範圍的緩存,當調用 SqlSession 的修改、添加、刪除、提交、關閉方法,一級緩存情況。
五、二級緩存
二級緩存是 Mapper 映射級別的緩存,當多個 SqlSession 去操作同一個 Mapper 映射的 SQL 語句,多個 SqlSession 共享二級緩存,二級緩存跨 SqlSession。
六、開啓二級緩存
第一步:在 SqlMapConfig.xml 文件中開啓二級緩存
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
第二部:修改相關的持久層映射文件
<mapper namespace="chu.yi.bo.dao.IUserDao">
<!-- 開啓二級緩存支持 -->
<cache></cache>
<!-- useCache="true" 當前語句支持二級緩存 -->
<select id="findById" resultType="chu.yi.bo.domain.User" parameterType="int" useCache="true">
select * from user where id = #{uid};
</select>
</mapper>