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