MyBatis 延迟加载 (懒加载)

下面我们讲延迟加载 也叫 懒加载。 
延迟加载:resultMap 的数据以 树状结构 为主,当我们用到分支数据的时候再查下,反之则,不查询,这样可以节省数据库资源。

那么我在上一个demo的基础做一点小改进:

1、首先在 mybatis-config.xml 中添加设置:


    
        
        
        
        
    

2、修改 Mapper 映射文件 OrderDao.xml




    
        
        
        

        
        
    

    


    

    

注意:由于是懒加载是分开查询,所以我们的每个select 映射也需要分开写。 
这里需要注意的就是 association 和 collection 标签中的 column 和select属性 
select: 填写 我们要调用的 select 映射的 id 
column : 填写 我们要传递给 select 映射的 参数。

测试代码:

/**
 * Unit test for simple App.
 */
public class AppTest extends TestCase {
    public void selectOrder() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        OrderDaoLazy mapper = session.getMapper(OrderDaoLazy.class);

        List orders = mapper.findOrderDetailLazy();

        for(int i=0; i
  •  

注意:由于我们的Order类中的 toString方法 读取了User 和 OrderItem对象,出发了懒加载,所以你会看到控制台打印了3次 select 语句,当我们调用数据时才会查询数据库。(如果想进步测试,可以将 Order 类中的toString,方法去掉,然后分别调用getUser 和 getOrderItems 方法,通过断点方式去查看)

你可能感兴趣的:(Java,springboot)