1. 程式人生 > >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

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

MybatisSQL查詢刪除更新插入設計

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,普通的