ibatis中多表联接查询

简介: 目前,我在做项目的时候,用到了spring + struts2 +ibatis 框架。平时用到的都是一张简单的表,来进行数据的增、删、改、查。而现在突然需要用到其它的一张表,或多张表进行联接查询,那么,在这种情况下,在xml映射文件中,就不能像单张表映射那样。 那么,我们需要怎么处理呢?下面我就简单的来说明一下:1、假如我数据库中有两张表:topo表和device表;2、它们分别对


目前,我在做项目的时候,用到了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>
 


这样就完成了 ,这是两张表的联接查询 ,多张表查询和这相同,希望能给大家带来帮助。 有什么不明白的地方,或者是有更好的办法可以互相交流。
目录
相关文章
|
存储 关系型数据库 MySQL
MySQL数据库的跨库查询和联合查询技巧
MySQL数据库的跨库查询和联合查询技巧
|
2月前
|
SQL 数据库
SQl查询之单表查询,连接与嵌套查询
SQl查询之单表查询,连接与嵌套查询
34 0
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库—多表设计与关联查询
MySQL数据库—多表设计与关联查询
|
7月前
|
SQL
深入了解关联查询和子查询
深入了解关联查询和子查询
73 0
|
SQL JavaScript 小程序
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
JOIN多表关联查询
JOIN多表关联查询
55 0
|
SQL HIVE
hive:条件查询、join关联查询、分组聚合、子查询
hive:条件查询、join关联查询、分组聚合、子查询
726 0
hive:条件查询、join关联查询、分组聚合、子查询
|
SQL API 数据库
Mybatits-plus实现简单的多表联查和分页操作
mybatits-plus提供了简单的curd单表操作API,可以使用多样的方式实现。但是多表联查的时候,我遇到了一些困难,不可以使用通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错。于是就回归到了Mapper.xml文件,这种方法实现起来简单,也可以实现动态sql,非常方便。
162 0
|
SQL 缓存 关系型数据库
多表联查对比多次单表
只有聪明人才能看见的摘要~( ̄▽ ̄~)~
177 0
|
SQL 数据库
数据库(3)--嵌套查询和连接查询
数据库(3)--嵌套查询和连接查询
201 0
数据库(3)--嵌套查询和连接查询