首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Ibatis联系关系查询

2012-10-14 
Ibatis关联查询两个表 Dept(部门)、 Emp(员工)?部门中的列名?id 部门id?name 部门名称?员工表中的列?id 员

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" parameterid="resultEmp">?
<result property="id" column="id"/>?
<result property="name" column="name"/>?
<result property="dept.name" column="dname"/>?
</resultMap>?

<select id="selectById" parameterresultMap="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 id="resultEmp1">?
<result property="id" column="id"/>?
<result property="name" column="name"/>?
<result property="dept" column="deptId" select="selectDetpByEmp"/>?
</resultMap>?

<select id="selectDetpByEmp" resultparameterClass="String">?
select * from dept where id=#deptId#?
</select>?

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

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

热点排行