Mybatis——懒加载(延迟加载)

我们在做关联查询之后,默认懒加载是没有开启的,如果我们的查询没有用到被关联表的信息,没有懒加载也是会把被关联表里的内容查出来的,这必然是浪费了资源,我们开启懒加载之后,只有使用该表的内容的时候,mybatis才会调用查询语句。 配置的时候,在映射表的时候,在我们想要执行懒加载的对应的映射处加入"fetchType"属性,值为lazy(懒加载),eager(立即加载,默认)。我们来看看效果

public class Account {
          
   
    private Integer id;
    private String name;
    private Float money;
    private Integer u_id;
    private User user;
}
public class User {
          
   
    private Integer id;
    private String username;
    private String password;
    private String address;
    private Date birthday;
    private String sex;
}

当我们只需要获取account类里面的属性的时候,是没有去user表里面查询内容的,当我们关闭lazy之后,看看是什么情况。 很明显,这里我也只是查询了account的名字,但是他还给把关联的user表中的内容查询了一遍,虽然没有打印出来,但是也是造成了资源浪费。

全局配置

如果我们很多地方都要设置懒加载,那么我们就可以在mybatis-config.xml中的settings标签中设置全局懒加载。 当我们设置全局懒加载之后,肯定是有些地方不需要懒加载,那么我们就可以用fetchType属性设置为eager来覆盖全局懒加载。

经验分享 程序员 微信小程序 职场和发展