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
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美工
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;
相關推薦
C#對資料庫的操作(查詢,刪除,更新)
查詢: static IQueryable<Outlet> Query(string Region, string DC, string CustomerCode, string KA, string OutletCode, string NestleOutletCode
Mybatis多對多中的SQL(查詢、刪除、更新、插入)及表的設計
1.1現實模型 一個Project需要多個Developer來開發,一個Developer有多個Project開發任務。 1.2實體類 Project public class Project { private int id;
Mybatis一對多中的SQL(查詢、刪除、更新、插入)及表的設計
1.1現實模型 一個Teacher有多個Student,一個Student有一個Teacher,通過Teacher來管理Student 1.2實體類 Teacher public class Teacher { private int i
MyBatis中對映檔案和註解的關係查詢(一對一,一對多,多對多)
對映關係的查詢 一對一查詢:(案例--人和卡) User實體類 package com.entity; public class User { private int uid;
【筆記】Mybatis高階查詢(四)--使用resultMap的<collection>標籤實現一對多和多對多查詢
<collection>集合的巢狀結果對映就是指通過一次SQL查詢將所有的結果查詢出來,然後對映到不同的物件中。在一對多的關係中,主表一條資料會對應關聯表的多條資料。因此一般查詢時會查詢出多條結果,按照一對多的資料對映時,最終的結果數會小於等於查詢的總記錄數。
(十九)Mybatis自關聯多對多查詢
注:程式碼已託管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,專案是mybatis-14-oneself-many2one,需要自取,需要配置maven環境以及mysql環境(sql語句在resource下的test.s
MyBatis學習總結(九)---基於XML多表聯合查詢(一對一、一對多、多對多)
1、一對一的關聯 使用association,association元素用於處理“has-one”(一對一)這種型別關係。 作用:針對pojo物件屬性的對映,它的兩個主要引數此時對應的值: javaType對應pojo類名, property對應pojo的
mybatis 一對多,多對多等關係xml檔案中sql的寫法以及快取、延遲載入的配置寫法
高階功能https://blog.csdn.net/dfsaggsd/article/details/50555583 對映關係 一對一對映 SQL語句:使用者訂單查詢 SELECT orders.*, USER.username,
mybatis學習筆記(十一)多對多關聯查詢/級聯操作
package com.mybatis.test; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessi
mybatis 詳解(七)------一對一、一對多、多對多
不變 角色 導入 ctu transacti stat 工程 build -1 前面幾篇博客我們用mybatis能對單表進行增刪改查操作了,也能用動態SQL書寫比較復雜的sql語句。但是在實際開發中,我們做項目不可能只是單表操作,往往會涉及到多張表之間的關聯操作。那麽我
Java中多對多映射關系(轉)
turn this mage log 演示 定義 ava copy setname 多對對的映射,可以用學生和課程進行演示。一個學生可以選擇多個課程,一個課程又對應了多個學生 定義學生類 class Stu{ private String name; p
Django CRM查詢(一對多,多對多以及相關的反查)
mce field 需要 fff etime fcc nbsp pre 使用 Customer模型: class Customer(models.Model): name = models.CharField(max_length=32) qq =
sql 復雜查詢 以teacher student course多對多關系為例
mage 復雜查詢 tin 同學 北京 mode alt bsp bold 數據庫表和值 /* SQLyog Ultimate v8.32 MySQL - 5.7.17-log : Database - course_dbms *********************
mybatis: 多對多查詢[轉]
clas gen log exce spring read 運行環境 ava alias 加入3個包 log4j-1.2.17.jar mybatis-3.3.0.jar mysql-connector-java-5.1.8.jar log4j需要配置 log4j.pr
spring data jpa關聯查詢(一對一、一對多、多對多)
sse eager save net array ota println ack generate 在實際過往的項目中,常用的查詢操作有:1、單表查詢,2、一對一查詢(主表和詳情表)3、一對多查詢(一張主表,多張子表)4、多對多查詢(如權限控制,用戶、角色多對多)。做個
Mybatis之一對多,多對多查詢
association是用於一對一和多對一,而collection是用於一對多的關係 一對一(訂單和使用者): <select id="findOrdersUser" resultType="com.mybatis.xdw.po.OrdersCustom"> select
mybatis實現多表一對一,一對多,多對多關聯查詢
轉自:https://blog.csdn.net/m0_37787069/article/details/79247321 1、一對一 關鍵字:association 作用:針對pojo物件屬性的對映 property:pojo的屬性名 &
mybatis的多對多,一對多聯合查詢
sql表: 購物車表:shopcart表 商品與購物車的中間表: sitable表 商品表:introduction表 po類: Sitable.java &nb
JavaEE MyBatis關聯對映之多對多(教材學習筆記)
在實際運用中,多對多也是十分常見的,比如一個訂單可能包含多個產品,而每個商品有可能出現在多個訂單中,在資料庫中這樣的情況就需要一張中間表來維護,下面通過一個案例來學習 1.新建三個資料表 其中訂單表在上一票部落格中已經建立過了(點這裡跳轉至上篇部落格),下面展示中間表以及商品表的建立
處理 Mybatis 中一對多、多對一、多對多對映的黑魔法
前言 先看看Mybatis官方介紹 MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的