1.一級二級緩存(優先用二級 ,一級默認開啟,二級要去配置)
如何開啟二級緩存,分三步:
一是在配置文件中開啟,這是開啟二級緩存的總開關,默認是開啟狀態的:
<setting name="cacheEnabled" value="true"/>
二是在Mapper文件中開啟緩存,默認是不開啟的,需要手動開啟:
<!-- 每個Mapper文件使用一個緩存對象 -->
<cache/>
<!-- 如果是多個Mapper文件共用一個緩存對象 -->
<cache-ref />
三是針對要查詢的statement使用緩存,即在<select>節點中配置如下屬性:
useCache="true"
對於二級緩存有以下說明:
- 映射語句文件中的所有 select 語句將會被緩存。
- 映射語句文件中的所有 insert,update 和 delete 語句會刷新緩存。
- 緩存會使用 Least Recently Used(LRU,最近最少使用的)算法來收回。
- 根據時間表(比如 no Flush Interval,沒有刷新間隔), 緩存不會以任何時間順序 來刷新。
- 緩存會存儲列表集合或對象(無論查詢方法返回什么)的 1024 個引用。
- 緩存會被視為是 read/write(可讀/可寫)的緩存,意味着對象檢索不是共享的,而 且可以安全地被調用者修改,而不干擾其他調用者或線程所做的潛在修改。
2..取別名 默認的是類的名字小寫
3.
4.resultmap映射
resultMap>元素使用案例:
1.新建數據表t_user,插入測試數據。
use mybatis create table t_user( t_id int identity(1,1) PRIMARY key, t_name varchar(50), t_age int ) insert into t_user values ('lulu','23'); insert into t_user values ('lili','25'); insert into t_user values ('jiji','18');
2.新建持久化類User,並定義屬性。
/** * @author mz * @version V1.0 * @Description: 用戶實體類 * @create 2017-11-01 14:13 */ public class User { private Integer id; private String name; private Integer age; //省略setter和getter方法 }
3.創建UserMapper.xml,編寫映射查詢語句。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.mapper.UserMapper"> <resultMap id="resultMap" type="com.itheima.po.User"> <!--<id>和<result>的property屬性表示User類的屬性名,column屬性表示數據表t_user的列名。--> <id property="id" column="t_id"/> <result property="name" column="t_name"/> <result property="age" column="t_age"/> </resultMap> <select id="findAllUser" resultMap="resultMap"> <!--<select>元素的resultMap屬性表示引用上面定義的resultMap--> select * from t_user </select> </mapper>
4.在配置文件mybatis-config中,引入UserMapper.xml,並編寫測試方法
<!--配置mapper的位置--> <mappers> <mapper resource="com/itheima/mapper/CustomerMapper.xml"/> <mapper resource="com/itheima/mapper/UserMapper.xml"/> </mappers>
@Test public void findAllUserTest() { //獲取SqlSession SqlSession sqlSession = MybatisUtils.getSession(); //執行映射文件中定義的SQL,並返回結果 List<User> list = sqlSession.selectList("com.itheima.mapper.UserMapper.findAllUser"); for (User user : list) { System.out.println(user); } //關閉SqlSession sqlSession.close(); }
也可用以下方法替代