1. 程式人生 > >Mybatis 多對多表關聯

Mybatis 多對多表關聯

      mybatis3.0添加了association和collection標籤專門用於對多個相關實體類資料進行級聯查詢,但仍不支援多個相關實體類資料的級聯儲存和級聯刪除操作。因此在進行實體類多對多對映表設計時,需要專門建立一個關聯物件類對相關實體類的關聯關係進行描述。下文將以“User”和“Group"兩個實體類之間的多對多關聯對映為例進行CRUD操作。

     建立user表,對應實體類"User",建表語句如下:
     <!--StartFragment-->

Sql程式碼  收藏程式碼
  1. CREATE TABLE `user` (  
  2.   `id` int
    (11) NOT NULL auto_increment,  
  3.   `namevarchar(40) collate utf8_unicode_ci default NULL,  
  4.   `passwordvarchar(20) collate utf8_unicode_ci default NULL,  
  5.   `createtime` timestamp NULL default CURRENT_TIMESTAMP,  
  6.   PRIMARY KEY  (`id`)  
  7. )   

    建立group_info表,對應實體類"Group",建表語句如下:

Sql程式碼  收藏程式碼
  1. CREATE TABLE `group_info` (  
  2.   `id` int(11) NOT NULL auto_increment,  
  3.   `namevarchar(40) collate utf8_unicode_ci default NULL,  
  4.   `createdate` timestamp NULL default CURRENT_TIMESTAMP,  
  5.   `state` int(1) default '0' COMMENT '0:可見;1:不可見',  
  6.   PRIMARY KEY  (`id`)  
  7. )  

   建立user_group表,對應實體類"UserGroupLink"(該類為User和Group兩個實體類之間的關係描述),建表語句如下:

Sql程式碼  收藏程式碼
  1. CREATE TABLE `user_group` (  
  2.   `user_id` int(11) default NULL,  
  3.   `group_id` int(11) default NULL,  
  4.   `createdate` timestamp NULL default CURRENT_TIMESTAMP,  
  5.   KEY `FK_user_group_user_id` (`user_id`),  
  6.   KEY `FK_user_group_group_id` (`group_id`),  
  7.   CONSTRAINT `FK_user_group_group_id` FOREIGN KEY (`group_id`) REFERENCES `group_info` (`id`),  
  8.   CONSTRAINT `FK_user_group_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)  
  9. )   

   建立實體類User,程式碼如下:

Java程式碼  收藏程式碼
  1. package com.xxt.ibatis.dbcp.domain;  
  2. import java.util.Date;  
  3. import java.util.List;  
  4. /** 
  5.  * @describe: User實體類 
  6.  * @author:    Nirvana 
  7.  * @version:   V1.0  2011-3-11下午06:06:49 create 
  8.  */  
  9. public class User {  
  10.     private long id;  
  11.     private String name;  
  12.     private String password;  
  13.     private Date createTime;  
  14.     private List<Group> group;  
  15.     public Date getCreateTime() {  
  16.         return createTime;  
  17.     }  
  18.     public void setCreateTime(Date createTime) {  
  19.         this.createTime = createTime;  
  20.     }  
  21.     public long getId() {  
  22.         return id;  
  23.     }  
  24.     public void setId(long id) {  
  25.         this.id = id;  
  26.     }  
  27.     public String getName() {  
  28.         return name;  
  29.     }  
  30.     public void setName(String name) {  
  31.         this.name = name;  
  32.     }  
  33.     public String getPassword() {  
  34.         return password;  
  35.     }  
  36.     public void setPassword(String password) {  
  37.         this.password = password;  
  38.     }  
  39.     public List<Group> getGroup() {  
  40.         return group;  
  41.     }  
  42.     public void setGroup(List<Group> group) {  
  43.         this.group = group;  
  44.     }  
  45. }  

    建立實體類Group,程式碼如下:

Java程式碼  收藏程式碼
  1. package com.xxt.ibatis.dbcp.domain;  
  2. import java.util.Date;  
  3. import java.util.List;  
  4. /** 
  5.  * @describe: Group實體類 
  6.  * @author: Nirvana 
  7.  * @version: V1.0 2011-3-7下午08:10:29 create 
  8.  */  
  9. public class Group {  
  10.     private long id;  
  11.     private String name; // 組名  
  12.     private Date createTime;  
  13.     private int state; // 0可見狀態 1不可見狀態  
  14.     private List<User> user;  
  15.     public Date getCreateTime() {  
  16.         return createTime;  
  17.     }  
  18.     public void setCreateTime(Date createTime) {  
  19.         this.createTime = createTime;  
  20.     }  
  21.     public long getId() {  
  22.         return id;  
  23.     }  
  24.     public void setId(long id) {  
  25.         this.id = id;  
  26.     }  
  27.     public String getName() {  
  28.         return name;  
  29.     }  
  30.     public void setName(String name) {  
  31.         this.name = name;  
  32.     }  
  33.     public int getState() {  
  34.         return state;  
  35.     }  
  36.     public void setState(int state) {  
  37.         this.state = state;  
  38.     }  
  39.     public List<User> getUser() {  
  40.         return user;  
  41.     }  
  42.     public void setUser(List<User> user) {  
  43.         this.user = user;  
  44.     }  
  45. }  

    建立實體類UserGroupLink,用於描述User和Group之間的對應關係,程式碼如下:

Java程式碼  收藏程式碼
  1. package com.xxt.ibatis.dbcp.domain;  
  2. import java.util.Date;  
  3. /** 
  4.  * @describe: 描述User和Group之間的對映關係 
  5.  * @author: Nirvana 
  6.  * @version: V1.0 2011-3-11下午02:57:52 create 
  7.  */  
  8. public class UserGroupLink {  
  9.     private User user;  
  10.     private Group group;  
  11.     private Date createTime;  
  12.     public Date getCreateTime() {  
  13.         return createTime;  
  14.     }  
  15.     public void setCreateTime(Date createTime) {  
  16.         this.createTime = createTime;  
  17.     }  
  18.     public Group getGroup() {  
  19.         return group;  
  20.     }  
  21.     public void setGroup(Group group) {  
  22.         this.group = group;  
  23.     }  
  24.     public User getUser() {  
  25.         return user;  
  26.     }  
  27.     public void setUser(User user) {  
  28.         this.user = user;  
  29.     }  
  30. }  

    建立user實體類的對映檔案user.map.xml,程式碼如下:

Xml程式碼  收藏程式碼
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper   
  3.     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
  4.     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  5. <mapper namespace="com.xxt.ibatis.dbcp.domain.User">  
  6. 相關推薦

    mybatis實現一對一,一對關聯查詢

    轉自:https://blog.csdn.net/m0_37787069/article/details/79247321 1、一對一 關鍵字:association 作用:針對pojo物件屬性的對映       property:pojo的屬性名   &

    MyBatis關聯 一對

    在上一篇文章中,我們已經搭建了eclipse,mybatis,mysql 的開發環境,並且實現了 mybatis 的簡單的增刪改查功能。參考文章 有了上一篇文章的基礎,可以處理一些簡單的應用,但在實際專案中,經常是關聯表的查詢。比如:最常見到的多對一,一對多等。 1. M

    Mybatis 關聯關聯 如何插入關聯資料

    很多時候我們會碰到這樣一個需求,當前我有(使用者)表和(角色)表,他們之間是多對多的關係,所以我們通常會建立一個關聯表(使用者_角色)表,現在我們有固定的角色,只需要新增使用者即可,給使用者指定角色,那我們怎麼做呢,廢話不多說了,下面給出思路:         表 :us

    mybatis一個關聯很多的,好多是關聯關係,有必要建關聯物件麼

    不建議使用關聯物件   hb都一般不建議使用  設定關聯的時候  會影響sql查詢效率   特別是在資料量大的情況下  關聯物件導致查詢很多不必要的欄位資訊 ,員工表中你只需要用到部門表中的部門名字,如果你使用關聯物件,你會把部門表中的所有欄位給查詢出來,所以不建議,需要用

    Mybatis 關聯

          mybatis3.0添加了association和collection標籤專門用於對多個相關實體類資料進行級聯查詢,但仍不支援多個相關實體類資料的級聯儲存和級聯刪除操作。因此在進行實體類多對多對映表設計時,需要專門建立一個關聯物件類對相關實體類的關聯關係進行描述。下文將以“User”和“G

    Hibernate學習筆記(五) --- 創建基於中間關聯映射關系

    mys 兩個 override pac tid 一對多 main ber different 多對多映射是在實際數據庫表關系之間比較常見的一種,仍然以電影為例,一部電影可以有多個演員,一個演員也可以參演多部電影,電影表和演員表之間就是“多對多”的關系 針對多對多的映射關系,

    使用GreenDao建立關聯(一對一,一對)、CURD、升級資料庫等操作

            應用場景:從照片中找出包含有使用者人臉的照片,並儲存該照片中的人臉特徵、使用該特徵和使用者人臉特徵對比,滿足條件,照片就儲存到該使用者表裡 一、建立表 GreenDao託管地址:https://github.com/greenrobot

    MyBatis關聯對映關係,一對一,一對

    “縱許悠揚度朱戶,終愁人影隔窗紗” 前言 客觀世界中的物件很少有孤立存在的,例如班級,往往與班級的學生存在關聯關係,如果得到某個班級的例項,那麼應該可以直接獲取班級對應的全部學生。反過來,如果已經得到個學生的例項,那麼也應該可以訪問該學生對應的班級。這種例項之間的互相訪問就是關聯關係

    thinkphp5關聯,中間進行關聯

    這是中間表,不要問我為什麼這麼設計,這是領導要求的 CREATE TABLE `at_relation_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `aid` int(11) NOT NULL COMMENT 'aid', `bid`

    JPA關聯關係(一、一對、一對一)

    小提示:外來鍵在哪邊,那邊就是多方哦!! 單向多對一:   給多方加上 @ManyToOne ex:【產品類Product--多方 ,產品分類ProductDir--一方】 單向一對多:給一方加上 @OneToMany ex

    (十九)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的

    JavaEE MyBatis關聯對映之(教材學習筆記)

    在實際運用中,多對多也是十分常見的,比如一個訂單可能包含多個產品,而每個商品有可能出現在多個訂單中,在資料庫中這樣的情況就需要一張中間表來維護,下面通過一個案例來學習 1.新建三個資料表 其中訂單表在上一票部落格中已經建立過了(點這裡跳轉至上篇部落格),下面展示中間表以及商品表的建立

    JPA中關係的刪除操作,如何刪除放棄維護關聯關係的一方和中間的紀錄

    資料庫中的表 使用者表:在配置實體類的時候放棄了維護關聯關係的權利 角色表: 中間表: 需求:刪除t_user表中的user_id 為1的使用者,並刪除相關的中間表紀錄。 程式碼: @Test public

    MyBatis的學習(八)——關聯對映之關聯

    本次多對多關聯在之前進行的一對一和一對多關聯基礎之上進行。 需求:根據班級課程查詢選修學生資訊 新建課程表和課程表與學生表的中間表 建立Course實體類: package com.little.entity; import java.util.ArrayL

    MyCat分片規則(全域性,ER分片關聯,主鍵分片VS非主鍵分片),MyCat常用的分片規則(15中分片規則),自定義MyCat分片規則

    1 MyCat分片規則 資料切分中重要的幾條原則,其中有幾條資料冗餘,表分組(Table Group)。 1.1全域性表 如果你的業務中有些資料類似於資料字典,比如配置檔案的配置,常用業務的配置或資料量不是很大,很少變動的表,這些表往往不是特別大,而且大部分的業務場景都

    MyBatis學習筆記之三--關聯關係(

    MyBatis學習筆記(三) 關聯關係 首先給大家推薦幾個網頁: http://blog.csdn.net/isea533/article/category/2092001 沒事看看 - MyBatis工具:www.mybatis.tk http://www.mybatis.o

    mybatis 之三:關聯查詢

    MyBatis 本是apache的一個開源專案iBatis,它 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資

    # Mybatis(四)間關係分析,高階對映(一對一,一對) 菜鳥日記--day05(下_02)

    Mybatis(四)表間關係分析,高階對映(一對一,一對多,多對多) 菜鳥日記–day05(下_02) 花了很多時間,去看sql複雜查詢,更新慢了 電腦斷電寫的太急,綠色補更 一、表間關係分析 1.分析資料庫表的方法 思路: 需要分模組的對多張表進行邏輯分析 表記錄

    Mybatis關聯查詢

    mybatis3.0添加了association和collection標籤專門用於對多個相關實體類資料進行級聯查詢,但仍不支援多個相關實體類資料的級聯儲存和級聯刪除操作。因此在進行實體類多對多對映表設計時,需要專門建立一個關聯物件類對相關實體類的關聯關係進行描述