`
小杨学JAVA
  • 浏览: 886482 次
  • 性别: 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+Mysql的简单例子,有数据库文件。希望对初学者有所帮助!

    ibatis and和or联合查询 .doc

    ibatis and和or联合查询 .doc

    iBatis条件查询

    iBatis做的按条件查询,没关联其他表,内带Mysql,适用于小型项目,hibernate是全自动化,如有朋友想学习下半自动化持久层框架,那就来下载这个看看吧。。

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

    Ibatis查询语句里,可以使用多表查询,返回多个表的值.doc

    主子表查询ibatis

    使用ibatis配置的主子表关联查询的实例,一对多关系,在控制台打印,有log4j的使用,打印结果详细,(码云同步)

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

    ibatis的实现(包含模糊查询、关联查询、增删改查) 数据库sql server 2005

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

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

    ibatis配置文件介绍

    iBATIS是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性

    iBatis SQL Maps开发指南.pdf

    延迟加载 VS 联合查询(1:1) 复杂类型集合的属性 避免N+1 Select(1:M和M:N) 组合键值或多个复杂参数属性 支持Parameter Map和Result Map的数据类型 缓存Mapped Statement结果集 只读 VS 可读写 Serializable可...

    iBATIS实战

    9.3.4 联合使用readOnly属性和serialize属性 159 9.4 如何使用高速缓存模型中的标签 160 9.4.1 高速缓存的清除 160 9.4.2 设置高速缓存模型实现的特性 163 9.5 高速缓存模型的类型 163 9.5.1 MEMORY 163 9.5.2 LRU ...

    使用ibatis操作两个有关系的表

    ibatis 的小例子,主要是通过ibatis来处理2个数据表,其中数据表直接是有关系的

    ibatis+Spring demo

    内容包里面是源代码,运行该例子的方式就是,使用里面的sql文件还原数据库。...使用cmd进入该解压包,运行 java -jar *.jar ibatis2spring....欲了解代码的详细,请访问作者博客,搜索《ibatis + Spring 多表查询》文章。

    ibatis2所需jar包

    iBATIS[2]是一个可以设计和实现更好的 Java/.NET 应用程序持久化层的框架。iBATIS 把对象和存储过程或者使用 XML 描述符的 SQL 语句进行了关联。简单是 iBATIS 最大的优势

    ibatis2.x 详细介绍

    ibatis 开发指南 ibatis Quick Start............................................................................................ 5 准备工作.................................................................

    IBatis简单使用

    IBatis完成学员的增删改查,无关联关系。

    iBATIS介绍入门

    能支持懒加载、关联查询、继承等特性。 iBATIS不同于一般的OR映射框架。OR映射框架,将数据库表、字段等映射到类、属性,那是一种元数据(meta-data)映射。iBATIS则是将SQL查询的参数和结果集映射到类。 所以,...

    ibatis实战之一对多关联(源代码)

    ibatis实战之一对多关联源代码 文章地址:http://blog.csdn.net/itmyhome1990/article/details/30050183

    ibatis开发指南中文版

    ibatis Quick Start............................................................................................5 准备工作...................................................................................

    ibatis开发指南_夏昕

    ibatis Quick Start............................................................................................5 准备工作...................................................................................

    生成ibatis Dao

    生成Ibatis Dao的工具类,可以手动配置路径 去生成DAO ENTITY sqlMap

Global site tag (gtag.js) - Google Analytics