栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【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)

VALUES (2,1,1);

提示:

t_order表的user_id作为外键参照tb_user表的主键id。tb_item表作为中间表,用来维护tb_article和tb_order的多对多关系,tb_item表的order_id作为外键参照tb_order表的主键id,article_id作为外键参照tb_article 表的主键id

在数据库中执行SQL脚本,完成创建数据库和表的操作。接下来, 建一个User对象、一个Article对象和一个Order对象分别映射tb_user、tb_article和tb_order表。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

public class User implements serializable {

private Integer id; //用户id,主键

private string username; //用户名

private string loginname; //登录名

private string password; //密码

private string phone; //联系电话

private String address; //收货地址

//用户和订单是一对多的关系,即一个用户可以有多个订单

private List orders;

// 省略构选器和set/get方法…

}

用户和订单是一对多的关系,即一个用户可以有多个订单。在User类中定义了一个orders属性,该属性是一个List集合,用来映射一对多的关联关系,表示一个用户有多个订单。

public class Order implements Serializable {

private Integer id; //订单id,主键

private string code; //订单编号

private Double total; //订单总金额

// 订单和用户是多对一的关系,即一个订单只属于一个用户

private User user;

// 订单和商品是多对多的关系,即一个订单可以包含多种商品

private List

articles;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852296.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号