1. 程式人生 > >mybatis 理解 1、2級快取,,懶載入

mybatis 理解 1、2級快取,,懶載入

mybatis
    1. 根據 JDBC 規範 建立與資料庫的連線。 
    2. 通過反射打通Java物件和資料庫引數和返回值之間相互轉化的關係。

lazyLoadingEnabled    全域性性設定懶載入。
如果設為false,則所有相關聯的都會被初始化載入 true時,按需載入  預設false
aggressiveLazyLoading(積極載入)    當設定為true的時候,
懶載入的物件可能被任何懶屬性全部載入,false時每個屬性都按需載入。預設是true

<settings>
    <!-- 開啟延遲載入 的開關 -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <!-- 將積極載入改為消極載入即按需要載入 -->
    <setting name="aggressiveLazyLoading" value="false"/>
    <!-- 開啟二級快取 -->
   <!-- <setting name="cacheEnabled" value="true"/>-->
</settings>

<association property="user"  javaType="com.po.User"
                 select="com.po.mapper.UserMapper.findUserById"
                 column="user_id">
     <!-- 實現對使用者資訊進行延遲載入 -->
</association>

<property name="configurationProperties">
    <props>
        <!-- mapUnderscoreToCamelCase屬性將表中列名的下劃線對映為JavaBean屬性的駝峰式命名,預設為false -->
        <prop key="mapUnderscoreToCamelCase">true</prop>
    </props>
</property>

<!-- 開啟二級快取 -->
<setting name="cacheEnabled" value="true"/>


一級快取是SqlSession級別的快取。
二級快取是mapper級別的快取,  
一個mapper可以被多個sqlSession用    
service中的sqlSession,commit之後,快取就會被清空