`

Mybatis 关联操作

 
阅读更多

同Hibernate一样,Mybatis在进行关联操作时,使用也是极为方便的。本文仅就一对一关联查询及添加进行讲解,update和delete没什么差别。

先来看看关联查询,假设有丈夫(Husband)和妻子(Wife),属于一对一,如果看官觉得可行,也可以一对多,我无甚意见。

Husband:

public class Husband implements Serializable{
int id;
String name;
Wife wifeId;
getter....
setter....
}

 

Wife:

public class Wife implements Serializable{
int id;
String name;
getter...
setter...
}

 级联查询时:当查询Husband时,会将对应的Wife保存到wifeId中。

com.sdj.dao.map.HusbandMapper:

	@Select("SELECT * FROM husband where id=#{id}")
	@Results(value={
			@Result(property="id",column="id"),
            @Result(property="name",column="name"),
            @Result(property="wifeId",column="wifeId",javaType=Wife.class,
            one=@One(select="com.sdj.dao.map.WifeMapper.getWifeById"))			})
public Husband getHusbandById(int id);

 com.sdj.dao.map.WifeMapper:

@Select("select * from wife where id = #{id}")
public Wife getWifeById(int id)

注意上面的one=@One(select=""),这个会调用WifeMapper中的getWifeById()方法把对应的Wife查询出来绑定到Husband对象中。

 级联添加时:当添加Husband时,会将对应的Wife也添加到数据库中。

com.sdj.dao.map.HusbandMapper:

@Insert("insert into husband(name,wifeId) values(#{name},#{wifeId.id})")
public void addHusband(Husband husband);

 注意上门的#{wifeId.id},这个地方类似于Struts的OGNL表达式,Mybatis映射时,会去调用husband.getWifeId().getId(),从而将对应的wifeId值获取到,插入到对应的数据库中。

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Mybatis关联映射Demo

    Mybatis关联映射是数据库操作中的一个重要概念,它允许我们在SQL查询中处理一对多、多对一、多对多等复杂关系。在这个"Mybatis关联映射Demo"中,我们将深入探讨如何在Mybatis框架中实现这些关系映射,以便更好地理解...

    mybatis 关联查询完整代码

    MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java开发中的数据库操作,使得开发者可以更加专注于SQL语句的编写,而无需过多关注数据访问的底层细节。本篇文章将详细探讨MyBatis在关联查询中的一对一和一对多...

    mybatis关联查询案例

    该资源主要通过举例讲述mybatis中的一对一关联查询,并用两种不同的方法进行操作。

    MyBatis关联映射代码

    总的来说,MyBatis的关联映射机制大大简化了数据库操作,使得我们可以专注于业务逻辑而不是繁琐的SQL编写。在实际项目中,我们需要根据具体的需求选择合适的方式,合理地设计实体类和映射关系,以提高代码的可读性和...

    Mybatis关联映射

    ### Mybatis关联映射 #### 一、关联映射概览 在MyBatis中,关联映射是一种处理复杂查询结果的重要技术。当查询的数据涉及多个表时,使用关联映射能够有效地组织这些数据,使其按照面向对象的方式进行展现。 #### ...

    mybatis关联映射源码

    MyBatis是一个强大的Java持久层框架,它简化了数据库操作,允许开发者将SQL语句直接集成到Java代码中。在MyBatis中,关联映射是处理对象关系映射(ORM)的重要部分,用于描述实体类之间的关联关系,如一对一...

    mybatis关联/级联以及动态sql

    MyBatis是一个优秀的持久层框架...总之,MyBatis的关联和级联特性使得对象关系映射更加自然,动态SQL则让数据库操作变得更加灵活和高效。理解并熟练运用这些功能,将极大地提升你在处理数据库交互时的效率和代码质量。

    mybatis_xml关联插件

    Mybatis 是一个流行的Java持久层框架,它简化了数据库操作,允许开发者将SQL语句直接写在XML映射文件中,提供了动态SQL的功能。在Eclipse这样的集成开发环境中,为了提高开发效率,我们可以配置Mybatis的插件,使得...

    Mybatis关联练习

    总的来说,这个"Mybatis关联练习"涵盖了Mybatis中基本的实体关系映射,以及通过接口进行数据操作和使用分页插件提升性能的方法。通过实践这些知识点,开发者能够更好地理解和掌握Mybatis在实际项目中的应用,提高...

    企业级应用开发-MyBatis关联映射实践实验报告.docx

    本实验报告将详细阐述如何在 MyBatis 中进行关联映射的实践。 1. **数据库建立数据表** 在开始开发前,我们需要在数据库中创建相关的数据表。在本例中,我们创建了 `batch` 和 `batchdetail` 两张表。`batch` 表...

    mybatis关联查询多对多查询案例

    3. **编写Service和DAO**:在Service层,我们需要编写逻辑来处理多对多的关联操作,如添加、删除和查找关联关系。在DAO层,对应的Mapper接口和XML文件则需要提供相应的SQL操作。 4. **使用MyBatis的ResultMap**:...

    实现Mybatis框架中一对多关联映射的查询操作。

    本篇将详细讲解如何在Mybatis中实现一对多关联映射的查询操作。 首先,我们要明确一对多关联映射的基本概念。在这个例子中,User表(用户表)和Order_form表(订单表)之间存在1-N的关系,意味着一个用户可以有多个...

    MyBatis的关联映射

    **MyBatis关联映射详解** 在Java开发中,MyBatis作为一个优秀的持久层框架,提供了灵活的数据映射功能,使得数据库操作变得简单而高效。其中,关联映射是MyBatis中的一个重要特性,用于处理数据库中复杂的关系,如...

    mybatis关联查询问题(一对多、多对一)

    在这个场景中,"mybatis关联查询问题(一对多、多对一)"是核心关注点,这涉及到数据库设计中的关系映射以及在Mybatis中如何处理这些关系。 1. **一对多关联**: 在数据库设计中,一对多关联是指一个表中的记录可以...

    基于java的企业级应用开发:MyBatis的关联映射.ppt

    MyBatis是一个强大的Java持久层框架,它允许开发者将SQL语句与Java代码分离,以更灵活的方式处理数据库操作。关联映射是MyBatis中处理对象与对象间关联关系的关键特性,尤其在企业级应用开发中,面对复杂的数据库表...

    MyBatis关联映射:一对一、一对多-代码.zip

    MyBatis是一个强大的Java持久层框架,它允许开发者将数据库操作与业务逻辑紧密结合,通过XML或注解方式灵活地配置SQL语句。本压缩包文件包含的资源主要讲解了MyBatis中的两种关联映射技术:一对一(One-to-One)和一...

    MyBatis系列操作资源

    3. **查询语句**:在SQL查询语句中,通过`<select>`标签引用关联的实体,MyBatis会自动处理JOIN操作,将从表的数据合并到主表的结果集中。 4. **Java代码使用**:在Java代码中,可以直接通过对象的属性访问从表的...

    基于mybatis的collection标签实现帖子评论多级回复以及关联用户信息查询

    MyBatis是一个强大的Java持久层框架,它简化了数据库操作,使得开发者能更专注于SQL语句本身,而不是数据库访问层的实现细节。 首先,我们需要了解帖子评论的结构。帖子的一级评论下可以有多个二级评论,这些二级...

    MyBatis3操作数据库(CURD)

    MyBatis3是一款轻量级的Java持久层框架,它主要负责数据库的CRUD(创建、读取、更新和删除)操作。这个框架的核心理念是将SQL语句与Java代码分离,通过XML或注解的方式配置映射文件,实现动态SQL,增强了对数据库...

Global site tag (gtag.js) - Google Analytics