zoukankan      html  css  js  c++  java
  • 关于 Mybatis 设置懒加载无效的问题

     看了 mybatis 的教程,讲到关于mybatis 的懒加载的设置:

    只需要在 mybatis 的配置文件中设置两个属性就可以了:

        <settings>
            <!-- 打开延迟加载的开关 -->
            <setting name="lazyLoadingEnabled" value="true" />
            <!-- 将积极加载改为消息加载即按需加载 -->
            <setting name="aggressiveLazyLoading" value="false" />
            
        </settings>

    但是经过测试之后发现是无效的,经过一番折腾,发现是因为我在测试的时候,调用了查询出来的对象的 toString 方法,所以触发了一次懒加载:

    
                EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
                Employee employee = mapper.selectEmployee(1);
                System.out.println(employee);
    

    后来在配置文件中加入了这个设置:

    <setting name="lazyLoadTriggerMethods" value=""/>

    再试一遍,问题解决了

    附上文档上的说明:

    lazyLoadTriggerMethods:指定哪个对象的方法触发一次延迟加载。默认值:equals,clone,hashCode,toString

    所以,当我打印对象时,由于触发了 toString 方法,所以触发了一次懒加载

    Ps:在 Employee 中关联了 Department 对象,但是为了测试懒加载,我在 Employee 的toString 方法中并没有调用 Department 这个属性

  • 相关阅读:
    BZOJ4327 : JSOI2012 玄武密码
    BZOJ4303 : 数列
    BZOJ1077 : [SCOI2008]天平
    BZOJ1829 : [Usaco2010 Mar]starc星际争霸
    BZOJ1770 : [Usaco2009 Nov]lights 燈
    BZOJ3012 : [Usaco2012 Dec]First!
    BZOJ4320 : ShangHai2006 Homework
    BZOJ4311 : 向量
    BZOJ3075 : [Usaco2013]Necklace
    BZOJ4304 : 道路改建
  • 原文地址:https://www.cnblogs.com/zyx1301691180/p/7788252.html
Copyright © 2011-2022 走看看