JavaEE MyBatis關聯對映之多對多(教材學習筆記)
在實際運用中,多對多也是十分常見的,比如一個訂單可能包含多個產品,而每個商品有可能出現在多個訂單中,在資料庫中這樣的情況就需要一張中間表來維護,下面通過一個案例來學習
1.新建三個資料表
其中訂單表在上一票部落格中已經建立過了(點這裡跳轉至上篇部落格),下面展示中間表以及商品表的建立
create table tb_product(
id int(32) primary key auto_increment,
name varchar(32),
price double
);
insert into tb_product values('1','Java基礎入門','44.5');
insert into tb_product values('2','Java Web程式開發入門','38.5');
insert into tb_product values('3','SSM框架整合實戰','50');
create table tb_ordersitem(
id int(32) primary key auto_increment,
orders_id int(32),
product_id int(32),
foreign key(orders_id) references tb_orders(id),
foreign key(product_id) references tb_product(id)
);
insert into tb_ordersitem values('1','1','1');
insert into tb_ordersitem values('2','1','3');
insert into tb_ordersitem values('3','3','3');
2.在com.itheima.po包中建立持久化類product,並在類中定義相關屬性和方法,
package com.itheima.po;
import java.util.List;
public class Product {
private Integer id;//商品id
private String name;//商品名稱
private Double price;//商品價格
private List<Orders> orders;//與訂單的關聯屬性
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public List<Orders> getOrders() {
return orders;
}
public void setOrders(List<Orders> orders) {
this.orders = orders;
}
public String toString() {
return "Product [id="+id+",name="+name+",price="+price+"]";
}
}
並在訂單類Orders中新增如下程式碼
private List<Product> productlist;
public List<Product> getProductlist() {
return productlist;
}
public void setProductlist(List<Product> productlist) {
this.productlist = productlist;
}
並重寫Orders中的tostring方法
@Override
public String toString() {
return "Orders [id=" + id + ", number=" + number + ", productList=" + productList + "]";
}
3.建立OrdersMapper.xml檔案,程式碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.OrdersMapper">
<select id="findOrdersWithProduct" parameterType="Integer" resultMap="OrdersWithProductResult">
select o.*,p.id as pid,p.name,p.price
from tb_orders o,tb_product p,tb_ordersitem oi
where oi.orders_id=o.id
and oi.product_id=p.id
and o.id=#{id}
</select>
<resultMap type="Orders" id="OrdersWithProductResult">
<id property="id" column="id"/>
<result property="number" column="number"/>
<collection property="productList" ofType="Product">
<id property="id" column="pid"/>
<result property="name" column="name"/>
<result property="price" column="price"/>
</collection>
</resultMap>
</mapper>
4.在mybatis-config中配置OrdersMapper的路徑
<mapper resource="com/itheima/mapper/OrdersMapper.xml"/>
5.建立測試方法
@Test
public void findOrdersAndPorductTest() {
SqlSession session = MybatisUtils.getSession();
Orders orders = session.selectOne("com.itheima.mapper.OrdersMapper.findOrdersWithProduct",1);
System.out.println(orders);
//關閉SqlSession
session.close();
}
6.檢視測試結果
相關文章
- mybatis關聯關係對映MyBatis
- Mybatis實體關聯對映MyBatis
- MyBatis實現一對一關聯對映MyBatis
- MyBatis表關聯 一對多 多對一 多對多MyBatis
- day07-MyBatis的關聯對映01MyBatis
- MyBatis加強(1)~myBatis物件關係對映(多對一關係、一對多關係)、延遲/懶載入MyBatis物件
- Solidity語言學習筆記————16、對映MappingSolid筆記APP
- MyBatis從入門到精通(十一):MyBatis高階結果對映之一對多對映MyBatis
- springDataJpa聯表查詢之多對多Spring
- Solidity語言學習筆記————17、原始檔對映Solid筆記
- JPA關係對映系列四:many-to-many 關聯對映
- Laravel 之多對多的關係模型Laravel模型
- SpringMVC學習筆記9-靜態資源對映SpringMVC筆記
- Mybatis 學習筆記(一)——配置檔案SqlMapConfig.xml和對映檔案Mapper.xmlMyBatis筆記SQLXMLAPP
- Hibernate 的關聯關係對映
- Spring Data JPA 之 一對一,一對多,多對多 關係對映Spring
- Spring Boot 入門系列(二十八) JPA 的實體對映關係,一對一,一對多,多對多關係對映!Spring Boot
- Mybatis結果對映MyBatis
- 共享記憶體對映(linux程式與執行緒學習筆記)記憶體Linux執行緒筆記
- JPA(3) 表關聯關係(多對一、一對多、多對多、一對一)
- 結構動力學教材-學習筆記筆記
- Mybatis 基礎xml對映MyBatisXML
- MyBatis從入門到精通(九):MyBatis高階結果對映之一對一對映MyBatis
- 好程式設計師Java學習路線分享mybatis對映程式設計師JavaMyBatis
- MyBatis(四) 對映器配置(自動對映、resultMap手動對映、引數傳遞)MyBatis
- 機器學習之多類別神經網路:一對多機器學習神經網路
- Mybatis學習筆記 3:Mybatis 多種條件查詢MyBatis筆記
- Laravel多對多模型關聯Laravel模型
- C# 反射/對映學習C#反射
- JPA中對映關係詳細說明(一對多,多對一,一對一、多對多)、@JoinColumn、mappedBy說明APP
- 模型關聯一對多模型
- JPA關係對映系列五:many-to-many 關聯表存在額外欄位關係對映
- Mybatis對映檔案簡介MyBatis
- mybatis高階結果對映MyBatis
- MyBatis 結果對映總結MyBatis
- MyBatis初級實戰之六:一對多關聯查詢MyBatis
- spring data jpa關聯查詢(一對一、一對多、多對多)Spring
- Mybatis【15】-- Mybatis一對一多表關聯查詢MyBatis