赞
踩
Mybatis一对多中的SQL(查询、删除、更新、插入)及表的设计
Mybatis一对一中的SQL(查询、删除、更新、插入)及表的设计
一个Project需要多个Developer来开发,一个Developer有多个Project开发任务。
Project
public class Project
{
private int id;
private String name;
private Set<Developer> devs=new HashSet<Developer>();
}
Developer
public class Developer
{
private int id;
private String name;
private Set<Project> pros=new HashSet<Project>();
}
包括三张表:project、developer、midProDev。其中project、developer分别表示两个实体类,midProDev表储存project与developer多对多关系。
重点:midProDev的设计思路:除了id还包含两个字段m_pid,m_did分别外键关联project的p_id和developer的d_id。
project
p_id | p_name |
---|---|
14 | APP开发 |
15 | 后台开发 |
16 | UI美工 |
developer
d_id | d_name |
---|---|
13 | 李明 |
14 | 王红 |
15 | jack |
midProDev
id | m_pid | m_did |
---|---|---|
7 | 14 | 14 |
8 | 14 | 13 |
9 | 15 | 14 |
10 | 15 | 15 |
11 | 16 | 15 |
12 | 16 | 13 |
解读midProDev表的映射关系:
m_pid=14——>m_did=(13,14):p_id=14的项目(APP开发)对应的开发人员为:d_id=13的李明和d_id=14的王红
m_did=13——>m_pid=(14,16):m_did=13的开发人员(李明)对应项目为:p_id=14的APP开发和p_id=16的UI美工
create table project(p_id int primary key auto_increment,p_name char(20));
create table developer(d_id int primary key auto_increment,d_name char(20));
create table midProDev(id int primary key auto_increment, m_pid int, m_did int);
alter table midProDev add constraint p_d_const foreign key(m_pid) references project(p_id)on delete cascade on update cascade;
alter table midProDev add constraint d_p_const foreign key(m_did) references developer(d_id)on delete cascade on update cascade;
project插入单条:insert into project(p_name) value(?);
developer插入单条:insert into developer(d_name) values(?);
midProDev插入多条:insert into midProDev(m_pid,m_did) values(?,?),(?,?)
一般我们使用Mybatis来出入一个Project对象的数据时,除了要插入Project对象的id,name到project表外,还需要将Project中的Developer集合的数据插入到developer表中。并且还需要同时维护project表和developer表的关系。例如一个Project对象id=1,它的Developer集合有两个id=3和id=4的Developer对象。则midProDev表需要插入语句为:insert into midProDev(m_pid,m_did) values(1,3),(1,4)
delete from developer where d_id=?;
略
查询project表中p_id=14的记录所关联的developer表中的数据
select developer.* from midProDev inner join developer on developer.d_id=midProDev.m_did where midProDev.m_pid=14;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。