`
andongoop
  • 浏览: 62310 次
  • 性别: 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那样,大家共同探讨一下

上面的内容如有不妥还请指点。
分享到:
评论
7 楼 javaAlpha 2010-02-25  
楼主为什么不在业务逻辑层实现呢
6 楼 argan 2009-09-23  
kqy929 写道
xiaoping8411 写道
我真不知道你为什么要这样做?
个人觉得多此一举。

ibatis本就不是一个完全的ORM框架。
为啥硬要使用他做些没必要的事呢。
这些可由自己在业务里面控制,没必要交给ibatis来处理。


是的ibatis的定位就是一个sqlmap而已,只是辅助一下,并没有实现太多的orm的东西
5 楼 kqy929 2009-09-23  
xiaoping8411 写道
我真不知道你为什么要这样做?
个人觉得多此一举。

ibatis本就不是一个完全的ORM框架。
为啥硬要使用他做些没必要的事呢。
这些可由自己在业务里面控制,没必要交给ibatis来处理。
4 楼 zozoh 2009-09-22  
看这个: http://nutz.googlecode.com
3 楼 andongoop 2009-09-18  
有什么好的方法吗?
提出来呀?
2 楼 xiaoping8411 2009-09-18  
我真不知道你为什么要这样做?
个人觉得多此一举。
1 楼 andongoop 2009-09-18  
希望抛砖引玉的,怎么没有人提出意见

相关推荐

    ibatis 文档查询

    iBATIS不仅限于查询,还支持插入、更新、删除等SQL语句的执行。同时,可以通过配置文件进行DDL操作,例如创建、修改或删除数据库表结构。 6. **处理极大的数据集** 对于大规模数据的处理,iBATIS提供了分页查询、...

    ibatis日期格式.doc

    - **问题1**: 建议优化`search`方法,使用联合查询替代多条SQL语句。iBatis支持动态SQL,可以利用`&lt;union&gt;`标签来组合多个查询,提高效率。 - **问题2**: 对于日志保存,建议进行更彻底的封装。这意味着可能需要...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    在Java代码中,通过MyBatis的SqlSession对象加载或保存相关的对象,Ibatis会自动处理一对多的关联填充和删除规则。 接着,批处理操作是提高性能的关键。在Ibatis中,可以通过设置SqlSession的flushCache和useCache...

    ibatis的的增删改查和一对一、一对多查询

    在SQL查询中,可以使用嵌套选择(`&lt;select&gt;`标签)或者联合主键(`&lt;join&gt;`标签)来关联一对一的表。 2. **一对多关系**:在一个实体类中,可能存在与多个其他实体类的关系,如一个用户有多个订单。同样,使用`...

    ibatis api 帮助文档+IBATIS 开发文档

    通过SqlMapClient,开发者可以执行查询、插入、更新和删除等操作。 2. **Statement**:代表了一个SQL语句,包括PreparedStatement和SimpleStatement两种类型。PreparedStatement支持预编译,提高性能并防止SQL注入...

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

    2. 映射文件和SQL语句:讲解如何编写XML映射文件,包括插入、更新、删除和查询等操作。 3. 动态SQL:Ibatis的动态SQL功能允许在运行时构建SQL语句,极大地提高了灵活性。 4. 参数映射和结果映射:详细解释了如何...

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

    关联查询,也称为JOIN查询,用于获取多个表之间的相关数据。在Ibatis中,你可以使用`&lt;association&gt;`标签来处理一对多或多对一的关系,或者使用`&lt;collection&gt;`处理多对多关系。以下是一个简单的例子,展示如何查询...

    ibatis2.0中文API

    SqlMapClient作为主要的对外接口,提供了操作数据库的基本方法,如插入、更新、删除和查询。SqlMapSession则代表了一个数据库会话,它封装了具体的数据库操作,支持事务管理和结果集的映射。 总结来说,iBATIS 2.0...

    IBatis.NET开发文档

    - 批量操作:如何利用iBATIS进行批量插入、更新或删除。 - 动态SQL的最佳实践:分享编写高效动态SQL的技巧和注意事项。 通过深入学习这些文档,开发者可以熟练掌握iBATIS.NET,实现高效、灵活的数据访问,同时...

    ibatis基础知识详解

    这些映射文件通常以XML格式编写,其中定义了SQL查询、插入、更新和删除操作,以及对应的参数映射和结果集映射。 ### 2.2 SqlSessionFactory SqlSessionFactory是Ibatis中的一个关键对象,它负责创建SqlSession实例...

    ibatis.doc

    SqlMapClient支持多种基本操作,如插入、更新、删除和查询数据,这些操作可以通过传入Java对象或者SQLID来执行。 在对象关系映射(OR映射)上,iBATIS允许开发者在XML映射文件中定义POJO(Plain Old Java Object)...

    ibatis生成实体工具

    而iBatis的Mapper XML文件则定义了SQL语句,如`&lt;select&gt;`标签用于查询,`&lt;insert&gt;`标签用于插入,`&lt;update&gt;`标签用于更新,`&lt;delete&gt;`标签用于删除。此外,还有`&lt;resultMap&gt;`定义结果集映射,`&lt;parameterMap&gt;`定义...

    经典开源插件之ibatis

    - **高级映射**:ibatis支持自动结果集到Java对象的映射,同时也支持复杂的一对多、多对一等关系映射。 - **灵活**:相比其他ORM框架如Hibernate,ibatis更为轻量级,且提供了更高的灵活性,开发者可以更自由地...

    ibatis笔记

    3. **映射文件**:编写`sqlMap.xml`映射文件,将Java类与SQL语句关联起来,定义SQL查询、插入、更新和删除操作。 在映射文件中,主要元素包括: - `&lt;typeAlias&gt;`:定义别名,方便引用Java类。 - `&lt;select&gt;`:定义...

    ibatis教程 输入参数详解

    mapper配置文件包含了具体的SQL映射语句,可以定义各种SQL操作,如查询、插入、更新和删除等。此外,还可以定义类型别名、类型处理器、对象工厂、插件、环境、事务管理器和数据源等配置项,为ibatis提供更为细致的...

    ibatis-2.3.

    10. **Batch Operations**: iBATIS 支持批量操作,如插入、更新和删除,可以提高数据处理效率。 从描述 "ibatis-2.3.ibatis-2.3.ibatis-2.3" 看,似乎是在强调这个版本,但并没有提供额外的信息。标签 "ibat" 显然...

    ibatis文档

    映射语句中的`&lt;select&gt;`, `&lt;insert&gt;`, `&lt;update&gt;`和`&lt;delete&gt;`元素分别对应SQL的查询、插入、更新和删除操作。`&lt;resultMap&gt;`用于定义查询结果如何映射到Java对象,可以处理一对一、一对多、多对多等复杂关系。 在**...

    iBatis资料 语法

    通过这个例子,你可以了解到iBatis的基本用法,包括插入、查询、更新和删除数据。 `ibatis 延迟加载、对多关系、缓存的测试.mht`涉及到iBatis的高级特性。延迟加载(Lazy Loading)是iBatis的一种优化策略,只在...

Global site tag (gtag.js) - Google Analytics