ibatis中多表联接查询

来源:互联网 发布:adsafe软件不能安装 编辑:程序博客网 时间:2024/06/14 05:39

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

<pre name="code" class="java">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>


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






















0 0
原创粉丝点击