怎样理解java多对多_Mybatis 一对一,一对多,多对一,多对多的理解

First (一对一)

首先我来说下一对一的理解,就是一个班主任只属于一个班级,一个班级也只能有一个班主任。好吧这就是对于一对一的理解

怎么来实现呢?

这里我介绍了两种方式:

一种是:使用嵌套结果映射来处理重复的联合结果的子集

另一种呢是:通过执行另外一个SQL映射语句来返回预期的复杂类型

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from class c, teacher t where c.teacher_id = t.t_id and c.teacher_id=#{id}

select * from class where c_id=#{id}

select t_id id,t_name name from teacher where t_id =#{id}

这里对assacation标签的属性进行解释一下:

property

对象属性的名称

javaType

对象属性的类型

column

所对应的外键字段名称

select

使用另一个查询封装的结果

这里ben层会发生变化 这个classes的被bean层会多一个Teacher的属性,并且增加的get,set方法。

Second (一对多)and (多对一)

一对多又是怎么样理解呢?

其实也很容易,一个顾客对应多个订单,而一个订单只能对应一个客户

而反过来也就是多对一的形式了

多个订单表可以对应一个顾客,一个顾客是可以拥有多个订单的

其实说到底就是有点类似多个一对一的情况,所以多对一的配置基本和一对一的配置保持一样

一对多的xml配置:

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT *

FROM t_customer

WHERE id=#{id}

在这里可以明显的看出多出了一个属性ofType,这个ofType的含义就是你collection所对应的是那个bean

当然在bean层中也会发生变化 ,这里在Customer的bean中嵌套一条语句

private List orders;   //一个Customer 对应N多个Orders

Third (多对多)

多对多又怎么理解呢?

一个用户可以属于多个集体(家人,朋友,同学),当然一个集体也包含了多个用户

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

extends="groupMap">

select * from group_info

select u.id as userId,u.name as userName,

u.password,u.createtime as userCreateTime,

gi.id,gi.name,gi.createdate,gi.state from group_info gi left

join user_group ug on gi.id=ug.group_id left join user u on

ug.user_id=u.id where gi.id = #{id}

delete from user_group

user_id = #{user.id}

and group_id = #{group.id}

这里还需要对user和group这两个bean之间的映射关系进行描述一下:

packagecom.yc.deom;importjava.util.Date;importcom.yc.bean.Group;importcom.yc.bean.User;/*** @describe: 描述User和Group之间的映射关系*/

public classUserGroupLink {privateUser user;privateGroup group;privateDate createTime;publicDate getCreateTime() {returncreateTime;

}public voidsetCreateTime(Date createTime) {this.createTime =createTime;

}publicGroup getGroup() {returngroup;

}public voidsetGroup(Group group) {this.group =group;

}publicUser getUser() {returnuser;

}public voidsetUser(User user) {this.user =user;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值