浏览 7633 次
锁定老帖子 主题:ibatis 插入 查询 删除 多表关联
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-18
最后修改:2009-09-18
部门中的列名 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那样,大家共同探讨一下 上面的内容如有不妥还请指点。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-18
希望抛砖引玉的,怎么没有人提出意见
|
|
返回顶楼 | |
发表时间:2009-09-18
最后修改:2009-09-18
我真不知道你为什么要这样做?
个人觉得多此一举。 |
|
返回顶楼 | |
发表时间:2009-09-18
有什么好的方法吗?
提出来呀? |
|
返回顶楼 | |
发表时间:2009-09-22
看这个: http://nutz.googlecode.com
|
|
返回顶楼 | |
发表时间:2009-09-23
xiaoping8411 写道 我真不知道你为什么要这样做?
个人觉得多此一举。 ibatis本就不是一个完全的ORM框架。 为啥硬要使用他做些没必要的事呢。 这些可由自己在业务里面控制,没必要交给ibatis来处理。 |
|
返回顶楼 | |
发表时间:2009-09-23
kqy929 写道 xiaoping8411 写道 我真不知道你为什么要这样做?
个人觉得多此一举。 ibatis本就不是一个完全的ORM框架。 为啥硬要使用他做些没必要的事呢。 这些可由自己在业务里面控制,没必要交给ibatis来处理。 是的ibatis的定位就是一个sqlmap而已,只是辅助一下,并没有实现太多的orm的东西 |
|
返回顶楼 | |
发表时间:2010-02-25
楼主为什么不在业务逻辑层实现呢
|
|
返回顶楼 | |