实体类:
@NoArgsConstructor
@AllArgsConstructor
@Setter@Getter@ToString
public class Department {
private Integer id;
private String dname;
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class Employee {
private Integer id;
private String ename;
// private Integer deptid;
private Department dept;
}
员工mapper配置文件:
部门mapper配置文件:
首先测试没有开启延迟加载得情况:
测试代码:
@Test
public void test3() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Employee emp = mapper.getEmp(1);
System.out.println(emp.getId());
sqlSession.commit();
sqlSession.close();
}
结果如图所示:
显然,在没有用到部门对象时任然发送了两条sql语句
开启延迟加载测试
在mybatis主配置文件中开启
第一次测试:
@Test
public void test3() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Employee emp = mapper.getEmp(1);
System.out.println(emp.getId());
// System.out.println(emp);
sqlSession.commit();
sqlSession.close();
}
结果
只发送了一条sql语句
第二次调用toString方法测试:
发送了两次sql语句