延迟加载是通过代理对象实现的。当你访问被延迟加载的关联对象时,MyBatis 会触发数据库查询。
比方,假设有一个 Order 对象,它有一个关联的 User 对象,在访问 Order 对象时,User 不会立即加载,只有当你访问 Order.getUser() 时,MyBatis 才会实行 SQL 查询,加载 User 数据。
Order order = orderMapper.selectOrderById(1);
User user = order.getUser(); // 此时会触发延迟加载,查询 User 数据