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 这个属性

  • 相关阅读:
    HDU 5640 King's Cake
    HDU 5615 Jam's math problem
    HDU 5610 Baby Ming and Weight lifting
    WHU1604 Play Apple 简单博弈
    HDU 1551 Cable master 二分
    CodeForces659C Tanya and Toys map
    Codeforces 960E 树dp
    gym 101485E 二分匹配
    Codeforces 961E 树状数组,思维
    Codeforces Round #473 (Div. 2) D 数学,贪心 F 线性基,模板
  • 原文地址:https://www.cnblogs.com/zyx1301691180/p/7788252.html
Copyright © 2011-2022 走看看