千锋逆战day22

MyBatis联表CRUD

I.多表连接查询方式 :

II.多表单独查询方式:

2.自关联:反应到数据库查询中用自连接来表示,即一张当成多张表来进行连接查询。

自关联可以以一对多来处理(如通过主菜单找到该主菜单下面所有的子菜单),也可以以多对一来处理(如给出一个文件位置,找出这个文件的所有上级目录的路径)。

(1)自关联以一对多的方式处理

开发步骤:

I.创建菜单表,设置关系,指明外键,由于自连接是连接同一张表,所以多方的外键是在同一张表中,外键指向父元素的id,一级元素的外键为null,而其他子元素的外键不为空,为它的上一级元素的id。

-- 菜单表

create table menu

(

mid int primary key auto_increment, -- 主菜单id

mname varchar(20), -- 菜单的名字

pid int, -- 父菜单的id

foreign key(pid) references menu(mid)

);

II.创建实体类

//一方

public class Menu {

private int mid;

private String mname;

// 以一对多方式处理,此时的Menu看到的子菜单Menu是多个

// 关联属性:表示子菜单

private Set

menus;// 多方

...

}

III.创建MenuDao

IV.创建映射文件

A.以一对多的方式:使用递归调用,将本次查询的id作为下一次查询父id进行递归搜索。比如菜单。

只找父菜单下面的子菜单:

找出父菜单及其子菜单:

B.以多对一的方式处理:使用递归处理,将找到的当前菜单的pid作为下一次查询的mid的,比如确定某一个文件的位置。

你可能感兴趣的:(千锋逆战day22)