mybatis0206 延迟加载

延迟加载

1.1使用延迟加载意义

在进行数据查询时,为了提高数据库查询性能,尽量使用单表查询,因为单表查询比多表关联查询速度要快。

如果查询单表就可以满足需求,一开始先查询单表,当需要关联信息时,再关联查询,当需要关联信息再查询这个叫延迟加载。

mybatis中resultMap提供延迟加载功能,通过resultMap配置延迟加载。

配置mybatis支持延迟加载


设置项


描述


允许值


默认值


lazyLoadingEnabled


全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载。


true | false


false


aggressiveLazyLoading


当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。


true | false


true

<!-- 全局配置参数,2个都要写 -->
    <settings>
        <!-- 延迟加载总开关 -->
        <setting name="lazyLoadingEnabled" value="true" />
        <!-- 设置按需加载 -->
        <setting name="aggressiveLazyLoading" value="false" />
    </settings>
延迟加载实现
1.1.1实现思路

需求:
查询订单及用户的信息,一对一查询。

刚开始只查询订单信息

当需要用户时调用 Orders类中的getUser()方法执行延迟加载 ,向数据库发出sql。

1.1.1 mapper.xml

<!-- 一对一查询延迟加载
     开始只查询订单,对用户信息进行延迟加载
      -->
     <select id="findOrderUserListLazyLoading" resultMap="orderCustomLazyLoading">
         SELECT
          orders.*
        FROM
          orders
     </select>
时间: 2024-10-13 10:35:36

mybatis0206 延迟加载的相关文章

关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )

PO 即Persistence Object VO 即Value Object PO 和VO 是Hibernate 中两个比较关键的概念. 首先,何谓VO,很简单,VO 就是一个简单的值对象. 如: TUser user = new TUser(); user.setName("Emma"); 这里的user 就是一个VO.VO 只是简单携带了对象的一些属性信息. 何谓PO? 即纳入Hibernate 管理框架中的VO.看下面两个例子: TUser user = new TUser()

懒加载(延迟加载)之后,在使用数据过程中容易出现的bug

在UI中,使用懒加载,也就是延迟加载来加载数据的时候,总是会面临几个问题? 如:1. >为什么先创建NSArray属性? 2. >为什么重写NSArray的get方法? 3.>为什么要判断是否为空? 4.>为什么下方代码"//1"这里不用NSString stringWithFormat: 而"//2"这里要使用? 5.>同时"//2"这里为什么使用的是%ld 来作为占位符? 这些问题不搞懂,懒加载就很难通透,  代

图片延迟加载——例子

<!doctype html> <html> <head> <meta charset="utf-8"> <title>图片延迟加载</title> </head> <style> * {margin:0; border:0; padding:0;} div {width:800px; height:280px; margin-bottom:200px;} </style> &l

hibernate之4.延迟加载

延迟加载: 只有当使用以实体对象的属性(除主键属性外)时,才会发送查询语句到数据库 get不支持延迟加载 @Test public void getTest(){ Session session=null; Student student=null; try{ session=HibernateUtil.openSession(); student=(Student) session.get(Student.class, 3); System.out.println("id:"+stu

懒加载(延迟加载)

懒加载FatchType.LAZY也称为延迟加载,是Hibernate3关联关系对象默认的加载方式,所谓懒加载就是当在真正需要数据的时候,才真正执行数据加载操作.简单理解为,只有在使用的时候,才会发出sql语句进行查询.懒加载的有效期是在session打开的情况下,当session关闭后,会报异常.当调用load方法加载对象时,返回代理对象,等到真正用到对象的内容时才发出sql语句. 急加载FatchType.EAGER 也成为立即加载,时立即执行sql语句.在session没有关闭的之前,如果

查询复杂对象用respsbody转换成json串时,mybatis的延迟加载报错的解决方法

在查询数据时,如果你查询的是复杂的对象需要通过respsbody转换成json串时,mybatis用的延迟加载会报以下错误: 解决方法:第一步在RequestMapping(参数中加入 produces =  "application/json")表示将功能处理方法将生产json格式的数据,此时根据请求头中的Accept进行匹配,如请求头"Accept:application/json"时即可匹配.第二步:在实体类中前面加上注解@JsonInclude(JsonIn

MyBatis应用开发(16)延迟加载之概念

1.1.1. 延迟加载的概念 延迟加载是指在存在关联关系时,在加载主表数据时,仅仅加载主表数据到映射的Java Bean对象中,而不会立即将关联的子表数据加载到存在关联关系的从属Java Bean中.在访问到关联的Java Bean的有关方法时,才会加载子表到关联的从属Java Bean中. 使用嵌套查询时,MyBatis支持延迟加载功能. MyBatis提供了2种方式控制延迟加载与否. 方式一:在SqlMapConfig.xml文件中使用3个setting结点控制整个程序中的associati

hibernate延迟加载(get和load的区别)(转)

在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对象时是有区别的,在查询性能上两者是不同的. 一.load加载方式 当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个代理对象,这个代理对象

提取数据库字段里面的值,并改变+图片懒加载,jquery延迟加载

要求:手机端打开某个页面的详细信息,因为网速或者别的原因,响应太慢,因为图片大的原因,希望先进来,图片在网页运行的情况再慢慢加载(jquer延迟加载) http://www.w3cways.com/1765.html()  困难:因为页面的图片是用编辑器加进去的        :图片与文字存到数据库的字段中 :实现思路:从数据库中读取这个字段,把字段里面的src替换成lazyload 然后再返回给页面 这里主要讲是怎么把从数据库取到的数据里面的字段里面的值替换然后与页面直接的数据转换 首先 pu