栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis中延迟加载Lazy策略的方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis中延迟加载Lazy策略的方法

lazy策略原理:只有在使用查询sql返回的数据是才真正发出sql语句到数据库,否则不发出(主要用在多表的联合查询)

1.一对一延迟加载:

假设数据库中有person表和card表:其中person表中有字段pid,pname,page,psex,cid,card表中有字段cid,cnum;

假设要查询某个人的姓名和身份证号码:

原理:在查询姓名时,实际本没有查询出身份证号码的信息,只有当前台使用身份证号时才发出对card的查询,需要查询出身份证号码是采取查询的一种策略;

实现实例:

实现步骤:

       1-导入mybatis 的依赖jar包

       2-添加log4j文件 (可查看内存中实际执行的程序)

1-原理:只有当前台使用身份证号时才发出对card的查询,否则只发出person信息的查询
          2-开启lazy:在conf.xml

 
     
     
   

3.实现:

(1)在mapper.xml映射文件中:

 
    select * from card where cid=#{value} 
   
   
     
     
     
     
     
     
   
   
    select * from adder where pid=#{value} 
   
   
    SELECT * FROM person where pid=#{value} 
   

(2)mapper接口定义方法:

1.此处是只发出person信息的查询;

@Test 
public void testselectpersonAndCardAndAdderLazyByPid(){//lazy策略一对多 
  Person p=pm.selectpersonAndCardAndAdderLazyByPid(1); 
  System.out.println(p.getPname()+",");////此处是只发出person信息的查询 
} 

结果执行的查询语句:

2.此处是发出person信息和身份信息的查询;

@Test 
public void testselectpersonAndCardAndAdderLazyByPid(){//lazy策略一对多 
  Person p=pm.selectpersonAndCardAndAdderLazyByPid(1); 
  System.out.println(p.getPname()+",");//此处是只发出person信息的查询; 
  System.out.println(p.getPname()+","+p.getCard().getCnum());//此处是发出person信息和身份信息的查询; 
}

 结果执行的查询语句:

3.此处发出person信息和身份信息,地址信息的查询;

@Test 
public void testselectpersonAndCardAndAdderLazyByPid(){//lazy策略一对多 
  Person p=pm.selectpersonAndCardAndAdderLazyByPid(1); 
  System.out.println(p.getPname()+",");//此处是只发出person信息的查询; 
  System.out.println(p.getPname()+","+p.getCard().getCnum());//此处是发出person信息和身份信息的查询; 
  //System.out.println(p.getPname()+","+p.getCard().getCnum()); 
  for (Adder adder : p.getAdder()) {////此处发出person信息和身份信息,地址信息的查询; 
    System.out.println(adder.getAshi()); 
  }   
}

 结果执行的查询语句:

总结

以上所述是小编给大家介绍的mybatis中延迟加载Lazy策略的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/140669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号