mybatis延迟加载
2016-01-09 03:03
501 查看
mybatis延迟加载:延迟加载是先从单表去查询,使用到关联信息时再从关联表中查询信息。这样可以提高查询效率。
mybatis延迟加载需要配合association和collection标签,使用子查询去查询。
延迟加载只有resultMap可以。
即定义多个resultMap。在加载一个statment完成后再加载其他的statment(定义多个statment)。
例子:
mybatis延迟加载需要配合association和collection标签,使用子查询去查询。
select t.*, (select * from product_detail p where t.id = p.product_id) from product t where t.id = 1
延迟加载只有resultMap可以。
即定义多个resultMap。在加载一个statment完成后再加载其他的statment(定义多个statment)。
例子:
<resultMap type="com.xy.domain.ProductDTO" id="productResult"> <id column="id" property= "id" /> <result column="product_name" property= "productName" /> <!-- 调用其他的 statment 1.select默认从本 mapper.xml 中寻找,找不到需要指定全路径 --> <association property="productDetail" column="id" select="com.xy.mapper.ProductIndexMapper.getProductDetailByProductId" /> </resultMap> <select id= "getProductById" parameterType ="int" resultMap="productResult"> select p.id, p.product_name <where> p.id = #{id} </where> </select> <select id= "getProductDetailByProductId" parameterType= "int" resultType="com.xy.domain.ProductDetail" > select pd.id id, pd.product_Id product_id, pd.product_price, pd.product_pic from product_detail pd <where> pd.product_Id = #{value} </where> </select>然后在mysql-config.xml中配置好延迟加载:
<settings> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="true"/> </settings>这样配置好以后,调用getProductById时不会执行获取产品详情的sql,只有在使用getProductDetailList();的时候,才会加载下面的sql。这样只有用到了才加载。提高了数据库查询效率。
相关文章推荐
- 基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
- js 延迟加载 改变JS的位置加快网页加载速度
- javascript图片延迟加载实现方法及思路
- 使用jquery插件实现图片延迟加载技术详细说明
- 深入浅析mybatis oracle BLOB类型字段保存与读取
- javascript 延迟加载技术(lazyload)简单实现
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
- 浅析Mybatis 在CS程序中的应用
- Java Mybatis框架入门基础教程
- 浅析js预加载/延迟加载
- jquery插件lazyload.js延迟加载图片的使用方法
- jquery lazyload延迟加载技术的实现原理分析
- 关于延迟加载JavaScript
- laravel容器延迟加载以及auth扩展详解
- 图片延迟加载的实现代码(模仿懒惰)
- Java简单实现SpringMVC+MyBatis分页插件
- 浅析mybatis和spring整合的实现过程
- mybatis的动态sql详解(精)
- MyBatis入门学习教程(一)-MyBatis快速入门
- Spring与Mybatis的整合方法有哪些