ibatis中多表联接查询
2015-10-28 13:44
316 查看
目前,我在做项目的时候,用到了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
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>
这样就完成了 ,这是两张表的联接查询 ,多张表查询和这相同,希望能给大家带来帮助。 有什么不明白的地方,或者是有更好的办法可以互相交流。
相关文章推荐
- [leetcode] 45. Jump Game II 解题报告
- SCSS个人规范总结
- android 实现视频选取功能,包括视频录制和从图库选取
- SCSS个人规范总结
- PowerDesigner反向工程操作步骤 以PowerDesigner15为例
- Jstl标签<c:if>的用法
- Requests+Beautifulsou 自动登录v2ex并签到(python3.4逐行解释)
- struts2_11_实现自己的拦截器的定义
- 关于.net 2.0 remoting 中 TCP Channel 用户认证探讨(一)
- crm服务查询实体和实体的字段信息
- 软件设计模式
- hdu1244(dp)
- main函数可变参数问题代码
- Android开发之自动填写短信验证码
- Git fetch和git pull的区别
- Ajax融合struts2过程中,action类回传给客户端中文数据出现问号乱码的解决办法
- 学Android---CheckBox
- 拳头公司聊天服务架构:服务器篇
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]
- JAVA 内存管理总结