Mybatis的一对多,多对一以及延迟加载
来源:互联网 发布:智汇诚网络 编辑:程序博客网 时间:2024/05/01 22:13
一对多查询
实体类
package com.zucc.model;import java.util.List;public class District{ private Integer did; private String dname; private List<Street> streets; public Integer getDid() { return did; } public void setDid(Integer did) { this.did = did; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; }<span style="white-space:pre"></span>public List<Street> getStreets() {<span style="white-space:pre"></span>return streets;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public void setStreets(List<Street> streets) {<span style="white-space:pre"></span>this.streets = streets;<span style="white-space:pre"></span>} }
配置文件
<resultMap type="com.zucc.model.District" id="districtResultMap"> <id column="did" property="id"/> <result column="dname" property="name"/> <collection property="streets" ofType="cn.wd.entity.Street" column="district_id"> <id column="sid" property="id"/> <result column="sname" property="name"/> </collection> </resultMap> <select id="findAllDistrictById" parameterType="int" resultMap="districtResultMap" > select d.*,s.* from district d,street s where s.district_id=d.did and d.did=#{id} </select>
多对一
实体类
package com.zucc.model;public class Street { private Integer sid; private String sname; private Integer disId; private District district; public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Integer getDisId() { return disId; } public void setDisId(Integer disId) { this.disId = disId; }public District getDistrict() {return district;}public void setDistrict(District district) {this.district = district;} }
配置文件
<resultMap type="com.zucc.model.Street" id="StreetResultMap"> <id column="sid" property="sid"/> <result column="sname" property="sname"/> <association property="district" javaType="com.zucc.model.District"> <id column="did" property="did"/> <result column="dname" property="dname"/> </association> </resultMap> <select id="findStreetById" parameterType="int" resultMap="StreetResultMap"> select d.*,s.* from district d,street s where d.did=s.district_id and s.sid=#{id} </select>
总结:
在MyBatis进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
使用association和collection完成一对一和一对多高级映射。
association:将关联查询信息映射到一个pojo对象中。
collection:将关联映射信息映射到一个集合中。
延迟加载
延迟加载(Lazy Load)实现的功能很好理解,就是在数据与对象进行Mapping操作时,只有当真正使用该对象时,才进行Mapping操作,以减少不必要的数据库查询开销,从而提升了程序的效率。
首先进行配置
<!-- 全局配置参数,需要时再设置 --><settings><!-- 打开延迟加载的开关 --><setting name="lazyLoadingEnabled" value="true" /><!-- 将积极加载改为消极加载即按需加载 --><setting name="aggressiveLazyLoading" value="false" /></settings>在Street的配置文件中修改
<resultMap type="com.zucc.model.Street" id="StreetResultMapLazyLoadingMap"> <id column="sid" property="id"/> <result column="sname" property="name"/> <association property="district" javaType="com.zucc.model.District" select="cn.wd.dao.DistrictMapper.findAllDistrictById" column="district_id"> </association> </resultMap> <select id="selectStreetLazyLoading" parameterType="int" resultMap="StreetResultMapLazyLoadingMap"> <span style="white-space:pre"></span>select * from street where sid=#{id} </select>这样一来,当你不需要使用District的对象时就不会进行处理,只有在你需要使用时才会处理
0 0
- Mybatis的一对多,多对一以及延迟加载
- Mybatis的一对多,多对一以及延迟加载
- mybatis的一对一,一对多查询,延迟加载,缓存介绍
- Mybatis的多对一,一对多
- Mybatis - 高级映射( 一对多 ,多对多 ,延迟加载)
- mybatis的一对一,一对多的关系映射配置及性能分析(延迟加载)
- MyBatis一对多和多对一
- MyBatis一对多和多对一
- MyBatis一对多和多对一
- MyBatis一对多和多对一
- MyBatis一对多和多对一
- MyBatis一对多和多对一
- MyBatis一对多和多对一
- mybatis一对多 多对一
- MyBatis一对多和多对一
- mybatis 一对多,多对一配置
- mybatis 一对多,多对一
- MyBatis一对多和多对一
- javascript中eval解析JSON字符串
- Android第二周(第二部分)-listview
- 关于静态变量,成员变量,静态方法,实例方法的用法及区别
- 递归算法
- ubuntu下code blocks安装全过程
- Mybatis的一对多,多对一以及延迟加载
- Java中JVM的内存区域划分
- 查找链表的中间节点
- 敏捷开发之PO
- Android按钮单击事件的四种常用写法总结
- 历久而新,我的新书《第二行代码》已出版!
- Wifi小车之 - 再探网页控制篇
- 使用ubuntu的时候忘记了root密码该如何重置
- AOJ 0121 bfs