目前,我在做项目的时候,用到了spring + struts2 +ibatis 框架。平时用到的都是一张简单的表,来进行数据的增、删、改、查。而现在突然需要用到其它的一张表,或多张表进行联接查询,那么,在这种情况下,在xml映射文件中,就不能像单张表映射那样。 那么,我们需要怎么处理呢?

下面我就简单的来说明一下:

1、假如我数据库中有两张表:topo表和device表;

2、它们分别对应两个实体类:Topo.class和Device.class

3、我们需要做的就是把这两个实体类再整合出一个联合的实体类:TopoDeviceUnion.class(Topo.class和Device.class的联合实体类),这个实体类中的属性,就是你在联接查询时能够用到的全部字段。

4、在xml映射文件中把TopoDeviceUnion.class中所有的属性全部都加进去。

代码实现如下:

Topo.class

public class Topo {
	private String id;
	private String name;
	private String ....;
	private Integer....;
		.
		.
		.
	(省略其它的属性)

	//get方法、set方法...
}



Device.class

<pre name="code" class="java">public class Device{
	private String loopbackIp;
	private String deviceModel;
	private String ....;
	private Integer....;
		 .
		 .
		 .
	 (省略其它的属性)
	//get方法、set方法...
}




TopoDeviceUnion.class

public class TopoDeviceUnion{
	private String id;
	private String name;
	private String lookbackIp;
	private String deviceModel;

	//get方法、set方法...
}

xml映射文件



<pre name="code" class="java"><?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE sqlMap
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="topodevice">
	<resultMap class="TopoDeviceUnion" id="resultMap_queryAllTopoDevice">
		<result property="id" column="id" jdbcType="varchar"/>
		<result property="name" column="name" jdbcType="varchar"/>
		<result property="loopbackIp" column="loopback_ip" jdbcType="varchar"/>
		<result property="deviceModel" column="device_model" jdbcType="varchar"/>
	</resultMap>

	<select id="queryAllTopoDevice" parameterClass="TopoDeviceUnion" resultMap="resultMap_queryAllTopoDevice">
		select b.id,b.name,a.loopback_ip,a.device_model from device a,topo b where a.device_id=b.device_id;
	</select>
</sqlMap>

这样就完成了 ,这是两张表的联接查询 ,多张表查询和这相同,希望能给大家带来帮助。 有什么不明白的地方,或者是有更好的办法可以互相交流。

ibatis中多表联接查询的更多相关文章

  1. MyBatis 中两表关联查询MYSQL (14)

    MyBatis 中两表关联查询MYSQL 1.创建数据库表语句 2.插入测试数据 3.pom文件内容 <?xml version="1.0" encoding="U ...

  2. RDIFramework.NET 中多表关联查询分页实例

    RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...

  3. Yii2中多表关联查询(join、joinwith)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order      (id  order_name ...

  4. [moka同学笔记]Yii2中多表关联查询(join、joinwith) (摘录)

    表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_name       cu ...

  5. Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)(转)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_ ...

  6. Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_ ...

  7. T-SQL表联接查询

    由于实践不足,总是忘记SQL Server 联接表查询的细节,在这里记录以便查询. 一.交叉联接 交叉联接仅执行一个罗辑查询处理阶段——笛卡尔积.也就是说,将一个输入表的每一行与另一个表的所有行匹配. ...

  8. Yii2中多表关联查询(hasOne、hasMany、join、joinwith)

    表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order      (id  order_name  customer_id ...

  9. 【SQL】在SQL Server中多表关联查询问题

    好久没有写SQL语句的多表连接查询,总在用框架进行持久化操作.今天写了一个多表关联查询,想根据两个字段唯一确定一条数据 失败的案例如下: SELECT cyb.id,ad.name FROM [Gen ...

随机推荐

  1. git中status指令总是提示内容被修改的解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近在用git提交项目修改时发现一个问题,就是多次 git a ...

  2. 适配器模式(adapter)

    适配器模式的定义: 将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能在一起的那些类可以一起工作. 主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式. ...

  3. 生活沉思录 via 哲理小故事

    本文转载:http://www.cnblogs.com/willick/p/3174803.html 1.小托蒂的悲剧 意大利小男孩托蒂,有一只十分奇怪的眼睛,因为从生理上看,这是一只完全正常的眼睛, ...

  4. Spring整合DWR comet 实现无刷新 多人聊天室

    用dwr的comet(推)来实现简单的无刷新多人聊天室,comet是长连接的一种.通常我们要实现无刷新,一般会使用到Ajax.Ajax 应用程序可以使用两种基本的方法解决这一问题:一种方法是浏览器每隔 ...

  5. sql server中高并发情况下 同时执行select和update语句死锁问题 (二)

    SQL Server死锁使我们经常遇到的问题,数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁.希望对您学习SQL Server死锁方面能有所帮助. 死锁对于DBA或是数据 ...

  6. Java继承时的初始化顺序

    Java程序在启动和运行时,需要首先完成初始化的工作.在涉及到继承.static成员变量等因素时,初始化的顺序就复杂起来.下面以一个例子说明继承时的Java初始化顺序. 例子: class Insec ...

  7. 编译GDAL支持OpenCL使用GPU加速

    前言 GDAL库中提供的gdalwarp支持各种高性能的图像重采样算法,图像重采样算法广泛应用于图像校正,重投影,裁切,镶嵌等算法中,而且对于这些算法来说,计算坐标变换的运算量是相当少的,绝大部分运算 ...

  8. [ExtJS5学习笔记]第二十节 Extjs5配合数组的push方法,动态创建并加载组件

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39226773 官方例子:http://docs.sencha.com/extjs/5. ...

  9. (NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 用plist列表文件来表示游戏数据 因为在这个炸弹人游戏中有很多 ...

  10. Java-IO之CharArrayReader

    CharArrayReader是字符数组输入流,CharArrayReader用于读取字符数组,继承于Reader操作的数据是以字符为单位. (1)CharArrayReader实际上是通过字符数组去 ...