Ibatis SqlMap映射关系总结
一、一对一关系
一对一关系即一对单个对象,下面举例说明:
一对单个对象
例如:
<resultMap id="loadAResult" class="A">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="areaId" column="areaId" />
<result property="treeChild" column="Aid" select="loadEngineerByParentId" />
</resultMap>
说明:treeChile为在A对象中自定义的一个属性,主要用来映射获取关联的B对象,用SQL语句来表示的话应该是这样:
select A.id,A.name,A.areaid,B.* from A,B where A.Aid =B.Bid,treeChild即B.*,此处为获取的单个对象;
二、一对多关系,即一对一个列表
一对多关系与 1 对 1 关系的区别之处在于类中引用的对象为一个列表而非单个对象,因此在 resultmap 中的 mapping 是一样的,唯一的区别在于关联的 select 返回的为一个列表而非单个对象,例如:
1、普通的一对多关系
<resultMap id="loadAResult" class="A">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="areaId" column="areaId" />
<result property="treeChild" column="Aid" select="loadEngineerByParentId" />
</resultMap>
resultmap同一对一关系一样,就是返回值为一个列表,多条记录
2、特殊的一对多关系,这里重点说明下这种关系,因为在项目中会遇到很多特殊的情况,并不能单纯用上面的关系来解决,
例如:A表有4个字段:id,name,areaid,aid,与之相关联的B表有3个字段:name,areaid,aid,现在要获得B表的name字段,为了直观,我用SQL语句表示:select name from B where areaid = xxx and aid =xxxx,即需2个字段才能定义一个唯一的name
针对这种情况,我们可以先写出子查询的mapping:
<resultMap id="loadB" class="B">
<result property="name" column="name" />
</resultMap>
<select id="loadEngineerByParentId" resultMap="loadEngineer" parameterClass="java.util.HashMap">
<![CDATA[ SELECT name
FROM B
WHERE areaid=#areaid# AND aid=#aid# ]]>
</select>
再写父查询:
<resultMap id="loadAResult" class="A">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="areaId" column="areaId" />
<result property="treeChild" column="areaid=areaId,aid=id" select="loadBrByParentId" />
</resultMap>
Ibatis SqlMap映射关系总结的更多相关文章
- 解决com.ibatis.sqlmap.client.SqlMapException: There is no statement named in this SqlMap
com.ibatis.sqlmap.client.SqlMapException: There is no statement named in this SqlMap. 可能存在3种情况: 1.在x ...
- NoClassDefFoundError: com/ibatis/sqlmap/engine/transaction/external/ExternalTransactionConfig处理
根据老系统拷贝maven依赖新搭建了一个项目,启动抛异常如下: Caused by: java.lang.NoClassDefFoundError: com/ibatis/sqlmap/engine/ ...
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...
- Hibernate4.2.4入门(二)——一对多的映射关系
一.前言 前面我们已经学过hibernate的基础,学会增删改查简单的操作,然而我们数据库中存在着1对多,多对1,多对多的关系,hibernate又是基于ORM基础上的开源框架,可以让我们不用去编写S ...
- EF里的继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子
本章节讲解EF里的继承映射关系,分为TPH.TPT.TPC.具体: 1.TPH:Table Per Hierarchy 这是EF的默认的继承映射关系:一张表存放基类和子类的所有列,自动生成的discr ...
- hibernate笔记--使用注解(annotation)方式配置单(双)向多对一的映射关系
前面几篇都是介绍的用配置文件来实现实体类到数据库表的映射,这种方式是比较麻烦的,每一个pojo类都需要写一个相应的*.hbm.xml,无疑增加了很多代码量,不过也有优点就是利于维护,为了方便开发,Hi ...
- hibernate笔记--单(双)向的多对多映射关系
在讲单向的多对多的映射关系的案例时,我们假设我们有两张表,一张角色表Role,一张权限表Function,我们知道一个角色或者说一个用户,可能有多个操作权限,而一种操作权限同时被多个用户所拥有,假如我 ...
- hibernate笔记--基于主键的单(双)向的一对一映射关系
上一节介绍的基于外键的一对一映射关系中,在Person表中有一个外键列idCard_id,对应的idCard表的主键id,至于基于主键的一对一映射关系,就是指Person表中抛弃了idcard_id这 ...
- hibernate笔记--基于外键的单(双)向的一对一映射关系
假设我们有两张表,人员信息表Person,和身份信息表IdCard,我们知道每个人只有一个身份证号,所以这里的Person和IdCard表是一一对应的,也就是一对一的映射关系,基于外键的单向一对一映射 ...
随机推荐
- 如何将图片嵌入到Html中
将图片内嵌入到Html中,最好的方法就是用Base64 string.例如:<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg ...
- vue + echarts画圈圈
<div class="chart-bar-left" id= "chartbar-left" style="margin-top:1%;&qu ...
- 开源日志收集Exceptionless简单使用
这两天在研究一个开源的日志收集工具Exceptionless 官网地址:https://exceptionless.com/GitHub地址:https://github.com/exceptionl ...
- kolla 安装
下载 kolla-ansible 和 kolla 源码: git clone http://git.trystack.cn/openstack/kolla-ansible -b stable/quee ...
- Java50道经典习题-程序19 输入行数打印菱形图案
题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案 * *** ************ ***** *** *分析:先把图形分 ...
- G - 確率(水题)
原文链接 G - 確率 Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu Submit S ...
- 【微信小程序】——wxss引用外部CSS文件及iconfont
小程序引入外部文件的方式是:@import "*/*.wxss"; 因为业务需要,正在开发的小程序中需要使用iconfont,很容易想到了H5的引入方式: ```` @font-f ...
- 敏感词过滤的算法原理之DFA算法
参考文档 http://blog.csdn.net/chenssy/article/details/26961957 敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有 ...
- Set的总结
Set最重要的操作是查找,为查找而设计.存入HashSet的元素必须定义hashCode(); Set不保存重复的元素,元素必须唯一.通过equals()方法一确保对象的唯一性. Set中最常被用于归 ...
- Spring注解大全,汇总版
Spring使用的注解大全和解释 注解 解释 @Controller 组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类 ...