`
小杨学JAVA
  • 浏览: 904121 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ibatis关联查询

 
阅读更多

两个表 Dept(部门)、 Emp(员工) 

部门中的列名 
id 部门id 
name 部门名称 

员工表中的列 
id 员工ID 
name 员工名称 
deptId 部门ID 

员工和部门为多对一得关系所以员工类中肯定要关联一个部门 
public class Emp { 
private String id ; 
private String name; 
private Dept dept; 
}  
public class Dept { 
private String id ; 
private String name; 
}  
getter setter方法省略 


1、插入员工信息操作 
因为员工表中有一列是部门ID所以做插入操作时要将一个部门对象set到员工对象中可以有下列两种操作 
配置文件 Emp.xml 
<insert id="insertEmp" parameterClass="Emp"> 
insert into emp (id, name, age, sex, birthday, deptId) values (#id#, #name#, #dept.id#) 
</insert> 
value 中的dept.id 为ibatis的进一步导航,因为emp对象中有一个部门对象,我们可以通过部门对象拿到部门id放到sqlz中。 

2、查询员工时我们也想查到他的部门信息 
配置文件 Emp.xml 
方法1:采用一条SQL语句搞定 
<resultMap class="Emp" id="resultEmp"> 
<result property="id" column="id"/> 
<result property="name" column="name"/> 
<result property="dept.name" column="dname"/> 
</resultMap> 

<select id="selectById" parameterClass="String" resultMap="resultEmp"> 
select e.id, e.name name d.name dname from emp e, dept d where e.deptid = d.id and e.id=#id# 
</select> 
方法2:采用 N + 1条 SQL搞定 
<resultMap class="Emp" id="resultEmp1"> 
<result property="id" column="id"/> 
<result property="name" column="name"/> 
<result property="dept" column="deptId" select="selectDetpByEmp"/> 
</resultMap> 

<select id="selectDetpByEmp" resultClass="Dept" parameterClass="String"> 
select * from dept where id=#deptId# 
</select> 

3、删除 假如我要删除部门的同时将该部门对应的员工全部删除 
一种方式我可以在业务方法中先用一条SQL将部门中所有的员工删除,然后再用一条SQL将部门删除 

不知都ibatis中是否提供了级联删除的功能项hibernate那样,大家共同探讨一下 

分享到:
评论

相关推荐

    Ibatis的简单例子(增删改查,联合查询等)

    在这个"Ibatis的简单例子"中,我们将探讨如何使用Ibatis进行数据库的增删改查(CRUD)操作以及联合查询。 1. **安装与配置**: 在开始之前,你需要在项目中添加Ibatis的依赖,通常是通过Maven或Gradle。在Maven的`...

    Ibatis复杂查询语句.doc

    在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...

    iBatis条件查询

    在本资源中,"iBatis条件查询"着重展示了如何根据业务需求定制SQL语句进行数据检索,尤其在不涉及复杂关联查询的情况下,iBatis可以提供高效且简单的解决方案。 首先,iBatis的核心概念是SQL Map,它是一个XML配置...

    ibatis 文档查询

    【标题】:深入理解iBATIS的查询机制 【描述】:本文将详细解析iBATIS框架中的查询功能,包括处理复杂对象关系、XML映射和数据集操作,旨在帮助开发者充分利用iBATIS进行高效数据库操作。 【标签】:iBATIS、查询...

    ibatis and和or联合查询 .doc

    ### ibatis and和or联合查询知识点 #### 一、ibatis简介 ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀开源数据访问框架。ibatis消除了几乎所有的JDBC对象操作,提供了一个简单的基本API,它通过XML或...

    Ibatis多表查询

    在多表查询中,Ibatis 提供了多种方式来处理复杂的关联查询,包括一对一、一对多、多对一和多对多等关系。在这个例子中,我们将探讨如何在 Ibatis 中实现一对多的关系查询。 首先,我们创建了两个表:`book` 和 `...

    ibatis多表查询

    在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...

    Ibatis查询语句里,可以使用多表查询

    多表查询通常涉及到 JOIN 操作,例如内连接(INNER JOIN)、左连接(LEFT JOIN)等,这些操作可以帮助我们从多个相关联的表中获取所需的数据。 #### 三、多表查询示例分析 根据提供的部分代码,我们可以看到一个多...

    ibatis做连接查询 .doc

    本文将详细介绍如何使用iBatis进行连接查询。 首先,我们需要理解iBatis的工作原理。iBatis并不是像Hibernate那样完全自动管理数据库操作,而是将SQL语句的编写权交给开发者,这样可以更好地控制查询性能和复杂性。...

    主子表查询ibatis

    本文将深入探讨如何在iBATIS中进行主子表查询,以及涉及到的相关技术如一对多关系、日志管理库log4j等。 首先,主子表查询是数据库设计中常见的场景,通常涉及到一个“父”表(主表)和一个或多个“子”表(从表)...

    ibatis多表查询过程

    当我们需要进行多表查询时,iBatis提供了一种高效且易于管理的方式。本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免...

    ibatis总结 ibatis ibatis ibatis ibatis

    - 使用`EXISTS`子查询通常比直接关联查询更高效,尤其是在数据量大的情况下。 - 避免在`WHERE`子句中使用多个条件或`OR`操作符,而是应该使用`IN`操作符或者`UNION ALL`合并多个查询。 3. Struts、Spring与Ibatis...

    ibatis教程_查询指定id的单个对象

    本教程聚焦于如何使用Ibatis查询指定ID的单个对象,这对于日常的数据检索工作尤为重要。 首先,理解Ibatis的基本架构。Ibatis不是一个完整的ORM(对象关系映射)框架,而是介于SQL和Java之间的桥梁,允许开发者编写...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义类型处理器、复杂关联映射等。 7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则...

    ibatis配置多表关联(一对一、一对多、多对多

    ibatis配置多表关联(一对一、一对多、多对多

    IBATIS开发使用实例

    本文将围绕“IBATIS开发使用实例”这一主题,深入解析复杂SQL查询的应用,尤其是如何利用SQL进行多表关联、条件筛选以及聚合函数的使用。 ### IBATIS简介 IBATIS,现被称为MyBatis,是一种优秀的持久层框架,它...

    ibatis api,ibatis文档,ibatis说明文档

    通过阅读文档,你可以了解如何配置Ibatis、创建Mapper接口和XML映射文件,以及如何处理复杂的查询和关联。 在说明文档中,通常会包含以下内容: 1. 安装和配置:介绍如何将Ibatis集成到项目中,包括Maven或Gradle...

    ibatis的实现(包含模糊查询、关联查询、增删改查)

    本篇将详细讲解Ibatis在实现模糊查询、关联查询以及增删改查操作时的关键知识点。 首先,模糊查询是数据库操作中常见的功能,Ibatis通过`&lt;if&gt;`标签或`&lt;where&gt;`标签配合`#{}`占位符来实现。例如,如果你有一个用户...

    ibatis开发指南 经典教材

    ibatis支持多种ORM映射策略,包括一对多关联和一对一关联。这些关联可以使用嵌套查询或嵌套结果的方式实现,允许开发者在多个表之间建立复杂的关系。此外,ibatis还支持延迟加载,即只有在真正需要时才加载关联对象...

Global site tag (gtag.js) - Google Analytics