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學習筆記(5)-高階對映之多對多對映MyBatis筆記
- Mybatis學習筆記(4)-高階對映之一對多對映MyBatis筆記
- MyBatis學習筆記(2)—對映關係篇MyBatis筆記
- Mybatis學習筆記(3)—高階對映之一對一對映MyBatis筆記
- mybatis關聯關係對映MyBatis
- Mybatis實體關聯對映MyBatis
- MyBatis實現一對一關聯對映MyBatis
- MyBatis表關聯 一對多 多對一 多對多MyBatis
- day07-MyBatis的關聯對映01MyBatis
- MyBatis加強(1)~myBatis物件關係對映(多對一關係、一對多關係)、延遲/懶載入MyBatis物件
- Erlang學習筆記(五)記錄與對映組筆記
- MyBatis從入門到精通(十一):MyBatis高階結果對映之一對多對映MyBatis
- JPA關係對映系列四:many-to-many 關聯對映
- mybatis入門基礎(六)----高階對映(一對一,一對多,多對多)MyBatis
- springDataJpa聯表查詢之多對多Spring
- Laravel 之多對多的關係模型Laravel模型
- Solidity語言學習筆記————17、原始檔對映Solid筆記
- mybatis 一對一關聯MyBatis
- hibernate之關於使用連線表實現多對一關聯對映
- hibernate(四) 雙向多對多對映關係
- hibernate(三) 一對多對映關係
- Hibernate 的關聯關係對映
- SpringMVC學習筆記9-靜態資源對映SpringMVC筆記
- Solidity語言學習筆記————16、對映MappingSolid筆記APP
- Mybatis結果對映MyBatis
- Spring Data JPA 之 一對一,一對多,多對多 關係對映Spring
- Java學習筆記之多型Java筆記多型
- Spring Boot 入門系列(二十八) JPA 的實體對映關係,一對一,一對多,多對多關係對映!Spring Boot
- JPA(3) 表關聯關係(多對一、一對多、多對多、一對一)
- hibernate 關係對映之 主鍵關聯一對一
- 共享記憶體對映(linux程式與執行緒學習筆記)記憶體Linux執行緒筆記
- Mybatis 基礎xml對映MyBatisXML
- MyBatis3:SQL對映MyBatisS3SQL
- 結構動力學教材-學習筆記筆記
- 好程式設計師Java學習路線分享mybatis對映程式設計師JavaMyBatis
- MyBatis學習 之 二、SQL語句對映檔案(1)resultMapMyBatisSQL
- MyBatis從入門到精通(九):MyBatis高階結果對映之一對一對映MyBatis
- Laravel多對多模型關聯Laravel模型