MyBatis延迟加载及在spring中集成配置

    xiaoxiao2023-07-29  131

    

    当你要使用one to one,many to one 就会碰到N+1的问题。很明显,对象之间关联很多有A关联B,B关联C,C关联A这样的关系,如果不是采用延迟加载,很容易一下在出现成千上万对象,造成N+1的问题。

     

    而Mybatis 设置延迟加载主要2个属性配置:

    <?xml version="1.0" encoding="UTF-8"?>    <!DOCTYPE configuration       PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">        <configuration>      <settings>          <setting name="lazyLoadingEnabled" value="false"/>          <setting name="aggressiveLazyLoading" value="true"/>      </settings>  </configuration>      <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"> <configuration> <settings> <setting name="lazyLoadingEnabled" value="false"/> <setting name="aggressiveLazyLoading" value="true"/> </settings> </configuration>

     

    lazyLoadingEnabled:true使用延迟加载,false禁用延迟加载。默认为true

     

    aggressiveLazyLoading:true启用时,当延迟加载开启时访问对象中一个懒对象属性时,将完全加载这个对象的所有懒对象属性。false,当延迟加载时,按需加载对象属性(即访问对象中一个懒对象属性,不会加载对象中其他的懒对象属性)。默认为true

     

       加载所有懒对象

    <configuration>      <settings>          <setting name="lazyLoadingEnabled" value="true"/>          <setting name="aggressiveLazyLoading" value="true"/>      </settings>  </configuration>     <configuration> <settings> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="true"/> </settings> </configuration>

     

       按需加载对象属性

    <configuration>       <settings>          <setting name="lazyLoadingEnabled" value="true"/>          <setting name="aggressiveLazyLoading" value="false"/>      </settings>  </configuration>    <configuration> <settings> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="false"/> </settings> </configuration>

    对继承spring配置如下:

    <bean id="sqlSessionFactory"      class="org.mybatis.spring.SqlSessionFactoryBean">      <property name="configLocation" value="classpath:setting.xml"/>      <property name="dataSource" ref="dataSource" />  </bean>   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:setting.xml"/> <property name="dataSource" ref="dataSource" /> </bean>

    setting.xml是mybatis全局属性配置文件。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)