1. 程式人生 > >mybatis級聯之一對多的關係

mybatis級聯之一對多的關係

一對多的級聯

mybatis一對多的級聯,這裡舉例班級和學生的例子,一個班級有多個學生,屬於一對多的關係,一個學生只屬於一個班級,屬於多對一的關係。
建立資料庫檔案
CREATE TABLE f_class(
c_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 's_id',
CODE VARCHAR(20) NOT NULL COMMENT '編號',
NAME VARCHAR(20) NOT NULL COMMENT '名稱'
);
INSERT INTO f_class(CODE,NAME) VALUES ('1401','Software Engineering'
);
CREATE TABLE f_student( s_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 's_id', s_NAME VARCHAR(20) NOT NULL COMMENT '名字', sex VARCHAR(20) NOT NULL COMMENT '性別', age INT NOT NULL COMMENT '年齡', class_id INT, FOREIGN KEY (class_id) REFERENCES f_class(id) ); INSERT INTO f_student (s_NAME,sex,age,class_id) VALUES
('lazy','boy',20,1);
INSERT INTO f_student (s_NAME,sex,age,class_id) VALUES ('rose','girl',19,1); INSERT INTO f_student (s_NAME,sex,age,class_id) VALUES ('joh','boy',19,1); INSERT INTO f_student (s_NAME,sex,age,class_id) VALUES ('miss','girl',20,1);

建立POJO物件,都省略類 set和get方法。
Grade.java

public class
Grade implements Serializable{
private Integer c_id; private String code; private String name; //班級和學生一對多的關係,一個班級可以有多個學生 private List<Student> students; }

Student.java

public class Student implements Serializable {
    private Integer s_id;
    private String s_name;
    private String sex;
    private Integer age;
}

對映檔案GradeMapper.xml

<mapper namespace="com.stumybatis.dao.GradeDao">
    <select id="selectGradeById" parameterType="int" resultMap="gradeStudent">
        SELECT * from f_class c,f_student s  where c.c_id=#{c_id} and s.class_id=c.c_id
    </select>
    <resultMap id="gradeStudent" type="com.stumybatis.pojo.Grade">
        <id property="c_id" column="c_id"/>
        <result property="code" column="code"/>
        <result property="name" column="name"/>
        <!--collection表示一對多的關係-->
        <collection property="students" ofType="com.stumybatis.pojo.Student" >
            <id property="s_id" column="s_id"/>
            <result property="s_name" column="s_name"/>
            <result property="sex" column="sex"/>
            <result property="age" column="age"/>
        </collection>
    </resultMap>
</mapper>

GradeDao介面的內容

public interface GradeDao {

    public Grade selectGradeById(Integer c_id);
}

測試程式碼

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring-mybatis.xml"})
public class StudentDaoTest {

    @Autowired
    private GradeDao gradeDao;

    @Test
    public void testSelecGrade2() throws Exception{
        Grade grade = gradeDao.selectGradeById(1);
        System.out.println(grade.getC_id()+ " "+grade.getCode()+" "+grade.getName());
        List<Student> list = grade.getStudents();
        for(Student student:list){
            System.out.println(student);
        }
    }

結果如下:
這裡寫圖片描述
但是有一個特別好玩的就是,如果這兩個地方的name不區分的話,那就會有很有意思的結果,就是所有的s_name都寫成name,會出現下圖的結果。把學生的name全都變成了軟體工程。很神奇有沒有。
這裡寫圖片描述

這裡的環境是搭建好的SSM環境測試的。

相關推薦

mybatis之一關係

一對多的級聯mybatis一對多的級聯,這裡舉例班級和學生的例子,一個班級有多個學生,屬於一對多的關係,一個學生只屬於一個班級,屬於多對一的關係。 建立資料庫檔案 CREATE TABLE f_class( c_id INT PRIMARY KEY AUTO

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

在實際應用中,應用更多的是一對多,例如每一個使用者可以有多個訂單,在使用MyBatis中是怎樣處理一對多的關係呢,在MyBatis對映檔案中有一個resultMap元素,此元素包含一個<collection>子元素,MyBatis就是通過他來處理一對多關係的, 下面通過一個案例瞭

hibernate關聯對映之一關係

以訂單和訂單項為例來講解Hibernate關聯對映中的一對多關聯關係。兩個實體類如下: 訂單類: package com.zking.four.entity; import java.util.HashSet; import java.util.Set; /**

Mybatis關聯查詢之一一XML配置詳解

平時在開發過程中dao、bean和XML檔案都是自動生成的,很少寫XML的配置關係,今天記錄一下mybatis的關聯查詢中的多對一和一對多的情況。 首先是有兩張表(學生表Student和老師Teacher表),為了更易懂,這裡只設置了最簡單的幾個必要欄位。表結構如下圖

mybatis ---- 查詢 一對 (集合對映)

關聯有巢狀查詢和巢狀結果兩種方式,本文是按照巢狀結果這種方式來說明的 上一章介紹了多對一的關係,用到了<association></association>,這是一個複雜型別的關聯。我們選擇一個示例來回顧下,比如:一個部落格有一個使用者,關聯對映就工

Hibernate 學習筆記 之 關係 及其 操作

一、多對多配置 User.java /** * Created by Donald on 2016/11/20. */ public class User { priva

mybatis-高階結果對映之一(你知道一對的結果是如何合併的嗎)

在一對多的關係中, 主表的資料回對應關聯表中的多條資料。 因此, 查詢時就會查詢出多條結果, 所以, 向類似的情況我們會使用 List 來進行儲存關聯表中獲取到的資訊。 1 資料準備 建立以下的名為 mybatis 的資料庫, 並在其下建立4個表。 在此就不貼出來建表的 SQL 語句了 , 感興趣的

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

本次部落格其它相關可以檢視之前的部落格的內容。 一對多使用到的主要是:collection 根據classes的id查詢對應的班級資訊,包括學生,老師 上一篇部落格已經建立classes和teacher表,這裡不再多說,本次建立student表即可: 定義student實

Mybatis之一一配置

原文地址:https://blog.csdn.net/qq_33561055/article/details/78861131 平時在開發過程中dao、bean和XML檔案都是自動生成的,很少寫XML的配置關係,今天記錄一下mybatis的關聯查詢中的多對一和一對多的情況。 首先是有兩張表(

Hibernate的關聯關係對映之一對映

1. 編寫客戶和聯絡人的JavaBean程式(注意一對多的編寫規則) * 客戶的JavaBean如下 public class Customer { private Long cust_id; private String cust_name; private Lo

MyBatis個物件屬性賦值

一個客戶有多個訂單,   一個訂單對應一個客戶 需求:查詢一個使用者,得到對應的使用者及相關訂單   兩個實體類 package com.itlike.domain; import lombok.Getter; import lombok.Setter; imp

MyBatis之一關聯查詢

一對多關聯 一對多關聯和多對一關聯的區別:是從一的一端取多的一端,還是從多的一端取一的一端。 表結構(一對多、多對一、一對一的表結構相同): -- 使用者表 CREATE TABLE `user1`( `id` INT PRIMARY KEY AUTO_INCREM

MyBatis入門實驗(7)之一關聯查詢

實驗內容 執行一對多關聯查詢 操作步驟 一、安裝 新增Maven依賴(本文使用版本為3.4.6) <dependency> <groupId>org.mybatis</groupId> &

springmvc-mybatis之一對映

1.首先來個需求 1.一個訂單表和一個訂單詳情表,一個訂單可以有多個訂單詳情,訂單詳情裡面主要記錄了購買商品的名稱以及數量。那麼,現在要查詢一個訂單的詳細情況。也就是說這是一對多查詢,從訂單表裡用其id查詢訂單詳情表的所有記錄。 2. 實現 2.1首先實現

Mybatis 基礎進階 一對 關係

Mapper XML 檔案 使用xml檔案實現 一些常用的查詢操作 準備工作 一張person 表 create table person ( id int auto_in

MyBatis從入門到精通(十一):MyBatis高階結果對映之一對映

最近在讀劉增輝老師所著的《MyBatis從入門到精通》一書,很有收穫,於是將自己學習的過程以部落格形式輸出,如有錯誤,歡迎指正,如幫助到你,不勝榮幸! 本篇部落格主要講解MyBatis中如何使用collection標籤實現查詢結果一對多對映。 1. 使用collection標籤 需求:根據使用者id查詢使用者

mybatis表查詢之關係查詢的實現-xml方式

  Mybatis對於多對多關係下的查詢提供了集合(collection)的概念來解決,collection屬性是resultMap高階結果對映的子集,首先,在本例中我們使用的是集合元素來解決多對多的查詢。 然後你會注意到有一個新的 “ofType” 屬性。這個屬性非常重要,它用來將 JavaBean(或欄位

mybatis查詢,分步查詢和延遲加載

enabled 4.2 res 標簽 mapper last pac mes 方式 級聯查詢: 1.Employee表: id;lastName;email; gender;d_id(外鍵關聯Department的ID) 2.Department表: id;deptNa

Mybatis查詢

username tac 實現 數據 配置 級聯查詢 builder java 3.0 轉自:http://blog.csdn.net/yulei_qq/article/details/22039815 工程的目錄結構: 有兩個表,一個文章表article ,一個用戶表u

hibernate關係的新增與刪除

程式碼 bookdao public Integer save(Book book) { Session session = SessionFactoryUtils.getSession(); Transaction transaction = session.beginTran