我们在做关联查询之后,默认懒加载是没有开启的,如果我们的查询没有用到被关联表的信息,没有懒加载也是会把被关联表里的内容查出来的,这必然是浪费了资源,我们开启懒加载之后,只有使用该表的内容的时候,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来覆盖全局懒加载。