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

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

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

EmployeeMapper mapper= session.getMapper(EmployeeMapper.class);

Employee employee= mapper.selectEmployee(1);

System.out.println(employee);

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

再试一遍,问题解决了

附上文档上的说明:

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

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

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐