Mybatis的延迟加载

  前边我们讲过了mybatis中的高级查询--关联查询。关联查询主要有三种方式,分别是一对一查询,一对多查询,多对多查询。其中一对一需要在resultMap节点中使用子节点assocaition节点;一对多关联查询需要在resultMap节点中使用collection节点;多对多就需要将上述的assocaition和collection节点一起使用。同时,我们在讲关联查询的时候,需要明确注意的是查询节点的返回值类型的选取,即resultMap和resultType一般当我们对查询结果没有特殊要求的时候选取resultType最为方便,当对执行SQL之后的查询结果有特殊要求的时候或者查询结果和POJO类属性不对照的时候,我们就要使用resultMap,特殊要求可以指:一对多中的将多条关联记录映射到POJO类中的list属性中,等等

  今天我们来讲一讲延迟加载。

  我们在Hibernate中已经学习过了延迟加载,即先执行简单查询,当需要关联查询时再去执行关联查询。好处是:提高了访问数据库的性能,减少了数据库的压力。因为单标查询要比关联查询速度更快。

  Mybatis也是有延迟加载的。但是仅仅是在resultMap返回类型的association和collection节点在才可以设置开启延迟加载的内容。而且我们需要在全局配置文件中设置两个参数,lazyLoadingEnable=true--将程序的延迟加载的功能打开--aggressiveLazyLoading=false--并采用消极加载的方式来延迟加载。

  具体的做法就是需要在mapper.xml中定义两个SQL来分别指明当前statement的SQL和关联的延迟加载的statement的SQL.

  其中关联的statement需要在resultMap中的assocaition或者collecttion中指明并且需要指明关联查询的字段是主查询的哪个字段即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值