Mybatis多对多中的SQL(查询、删除、更新、插入)及表的设计
来源:互联网 发布:python编写抢购软件 编辑:程序博客网 时间:2024/06/09 20:58
Mybatis一对多中的SQL(查询、删除、更新、插入)及表的设计
Mybatis一对一中的SQL(查询、删除、更新、插入)及表的设计
1.1现实模型
一个Project需要多个Developer来开发,一个Developer有多个Project开发任务。
1.2实体类
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>();}
1.3表的设计
包括三张表:project、developer、midProDev。其中project、developer分别表示两个实体类,midProDev表储存project与developer多对多关系。
重点:midProDev的设计思路:除了id还包含两个字段m_pid,m_did分别外键关联project的p_id和developer的d_id。
project
developer
midProDev
解读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美工
1.3.1创建表
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);
1.3.2添加外键关联
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;
1.4SQL语句
1.4.1插入
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)
1.4.2删除
delete from developer where d_id=?;
1.4.3更新
略
1.4.4查询
查询project表中p_id=14的记录所关联的developer表中的数据select developer.* from midProDev inner join developer on developer.d_id=midProDev.m_did where midProDev.m_pid=14;
- Mybatis多对多中的SQL(查询、删除、更新、插入)及表的设计
- Mybatis一对多中的SQL(查询、删除、更新、插入)及表的设计
- Mybatis一对一中的SQL(查询、删除、更新、插入)及表的设计
- SQL多表联合查询实现插入/更新/删除
- vc++连接mysql数据库,并对数据库中的表进行查询、插入、删除、更新等
- pl sql多表插入及更新
- VC++对Access数据库的操作(查询、插入、更新、删除等)
- SQL多表操作、插入、更新、删除(mysql)
- mybatis--day01动态查询、动态更新、动态删除、动态插入
- Mybatis批处理(批量查询,更新,插入)
- SQL语句,数据更新,数据插入删除修改和对视图的更新操作
- sqlite3的基本操作(插入,删除,更新,查询)
- SQL中的多表更新及注意事项
- Linq的技术太强大了分享一下(linq to sql 的插入、更新、查询、删除)
- SQL-数据的插入、更新和删除 (转载)
- 对Sql Server中的表添加级联更新和级联删除的几种方法
- 对Sql Server中的表添加级联更新和级联删除的几种方法
- C#下使用sql语句查询,插入,更新,删除
- 慕课网jQuery学习笔记(三)
- QThread使用——关于run和movetoThread的区别
- codeforces #410 div2 题解(数学)
- AIDL(Android Interface Definition Language)
- VIM 简单的替换删除命令
- Mybatis多对多中的SQL(查询、删除、更新、插入)及表的设计
- JavaScript设计模式(一) 单例模式
- 阿里沈询:分布式事务原理与实践
- 【IMWeb训练营作业】之select练习总结
- weblogic相关
- 【Codeforces 798 C】+ gcd
- poj1459Power Network_最大流的增广路算法_多源点多汇点问题(Edmord_Karp)
- VirtualBox centos7扩容
- Android:SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式