【Java进阶营】MyBatis的多对多关联关系,你知道吗?

在实际项目开发中,多对多关系也是非常常见的关系,比如,一个购物系统中,一个用户可以有多个订单,这是一对多的关系;一个订单中可以购买多种商品,一种商品也可以属于多个不同的订单,订单和商品就是多对多的关系。对于数据库中多对多关系建议使用一个中间表来维护关系,中间表中的订单d作为外键参照订单表的id,商品id作为外键参照商品表的id。

下面我们就用一个简单示例来看看MyBatis怎么处理多对多关系。

首先,在数据库创建三个表:TB_USER、TB_ARTICLE和TB_ORDER,再创建一个中间表维护TB_ARTICLE和TB_ORDER的关系,并插入测试数据。SQL脚本如下:

– 创建用户表

CREATE TABLE tb_user (

id INT PRIMARY KEY AUTO_ INCREMENT,

username VARCHAR(18),

loginname VARCHAR(18),

PASSWORD VARCHAR (18),

phone VARCHAR (18),

address VARCHAF (18)

);

– 插入用户表测试数据

INSERT INTO tb_user (username,loginname,PASSWORD,phone,address)

VALUES(‘张云’,‘jack’,‘123456’,‘13600000000’,‘杭州’);

– 创建商品表

CREATE TABLE tb_article(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR (18),

price DOUBLE,

remark VARCHAR (18)

);

– 插入商品表测试数据

INSERT INTO tb_article(NAME,price,remark)

VALUIES(‘精通Python自然语言处理’,108.9,‘经典著作’);

INSERT INTO tb_article(NAME,price,remark)

VALUES(‘自然语言处理原理与实践’,99.9,‘经典著作’);

INSERT INTO tb_article(MAME,price,remark)

VALUES(‘大数据架构详解’,89.9,'经典著作’);

INSBRT INTO tb_article(NAE,price,remark)

VAIUES(‘推荐系统实践’,69.9,‘经典著作’);

– 创建订单表

CREATE TABLE tb_order(

id INT PRIMARY KEY AUTO_INCREMENT,

CODE VARCHAR(32),

total DOUBLE,

user_id INT,

FOREIGN KEY (user_id) REFBRENCES tb_user(id)

– 插入订单表测试数据

INSERT INTO tb_order (CODE,total,user_id)

VALUES('20180315ORDER1212,388.6,1);

INSERT INTO tb_ordor(CODE,total,user id)

VALUES('20180315ORDER1213,217.8,1);

– 创建中间表

CREATB TABLE tb_item(

order_id INT,

article_id INT,

amount INT,

PRIMARY KEY (order_id,article_id),

FOREIGN KEY (order_id) REPERENCES tb_order(id),

FOREIGN KEY (acticle_id) REERENCES tb_article(id)

);

– 创建插入中间表数据

INSERT INTO tb_item(order_id,article_id,amount)

VALUES (1,1,1);

INSERT INTO tb_item(order_id,article_id,amount)

VALUES (1,2,1);

INSERT INTO tb_item(orde_id, article_id,amount)

VALUES (1,3,2);

INSERT INTO tb_item(orde_id, article_id,amount)

VALUES (2,4,2);

INSERT INTO tb_item(orde_id, article_id,amount)

VA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值