两个表 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那样,大家共同探讨一下
上面的内容如有不妥还请指点。
分享到:
- 2009-09-18 09:03
- 浏览 3051
- 评论(7)
- 论坛回复 / 浏览 (7 / 7619)
- 查看更多
相关推荐
Ibatis多表查询
Ibatis多表查询,一个小小的多表查询实例教你如何用ibatis进行多表查询
ibatis配置多表关联(一对一、一对多、多对多
Ibatis查询语句里,可以使用多表查询,返回多个表的值.doc
使用ibatis配置的主子表关联查询的实例,一对多关系,在控制台打印,有log4j的使用,打印结果详细,(码云同步)
ibatis多表查询开发过程(java)
Ibatis复杂查询语句.doc
操作数据库 iBATIS查询,java 和spring的配置方法
通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...
ibatis and和or联合查询 .doc
ibatis的多参数查询.doc
ibatis教程_删除指定id的单个对象.raribatis教程_删除指定id的单个对象.raribatis教程_删除指定id的单个对象.rar
ibatis动态多条件组合查询 实例 说明
一份非常详细的讲解文档,从建表到Ibatis配置文件,再到dao代码全部都有
主要是Ibatis的查询,修改,删除,映射和实现触发器操作! 触发器代码: DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`getEmp` $$ CREATE PROCEDURE `test`.`getEmp` (IN empid INT) BEGIN SELECT * FROM ...
iBATIS 级联iBATIS 级联iBATIS 级联
Ibatis查询Id列表.doc
这个文件中包含了许多ibatis的查询语句,能够让你很清楚的知道,如何实现动态的查询。
ibatis in action的文档,详细介绍ibatis的查询等