一对多|多对多表的关系

一的一方为主表,多的一方为从表(有外键)
一.建立实体类
建立实体类:一的一方增加成员变量set集合,集合中为多表是类的对象

package com.heima.domain;

import java.util.Set;

public class Customer {
	//CREATE TABLE `cst_customer` (
	  /*`cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
	  `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
	  `cust_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id',
	  `cust_create_id` bigint(32) DEFAULT NULL COMMENT '创建人id',
	  `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
	  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
	  `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
	  `cust_linkman` varchar(64) DEFAULT NULL COMMENT '联系人',
	  `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
	  `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',*/
private Long cust_id;
private String cust_name;
private String cust_source;
private String cust_industry;
private String cust_level;
private String cust_linkman;
private String cust_phone;
private String cust_mobile;
private Set<LinkMan> linkMans;

多的一方增加成员变量为一的实体类

package com.heima.domain;

public class LinkMan {
	/*CREATE TABLE `cst_linkman` (
	  `lkm_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '联系人编号(主键)',
	  `lkm_name` varchar(16) DEFAULT NULL COMMENT '联系人姓名',
	  `lkm_cust_id` bigint(32) NOT NULL COMMENT '客户id',
	  `lkm_gender` char(1) DEFAULT NULL COMMENT '联系人性别',
	  `lkm_phone` varchar(16) DEFAULT NULL COMMENT '联系人办公电话',
	  `lkm_mobile` varchar(16) DEFAULT NULL COMMENT '联系人手机',
	  `lkm_email` varchar(64) DEFAULT NULL COMMENT '联系人邮箱',
	  `lkm_qq` varchar(16) DEFAULT NULL COMMENT '联系人qq',
	  `lkm_position` varchar(16) DEFAULT NULL COMMENT '联系人职位',
	  `lkm_memo` varchar(512) DEFAULT NULL COMMENT '联系人备注',*/
private Long lkm_id;
private Character lkm_gender;
private String lkm_name;
private String lkm_phone;
private String lkm_mobile;
private String lkm_email;
private String lkm_qq;
private String lkm_position;
private String lkm_memo;
private Customer customer;
private Long cust_id;

关于inverse:
实际上是双方共同维护外键,实际上当对两表操作时,主键被修改两次
提高效率可以让一的一方放弃维护的权力,inverse=“true”;放弃自身的维护权
如果是多对多的关系,就要根据业务选一方放弃维护,不然会报错(向数据库中插入两条id相同的)
orm数据源(配置文件):
一的一方:

<set name="linkMans" inverse="true" cascade="save-update">
    			<key column="lkm_cust_id" />
    			<one-to-many  class="LinkMan"/>
    		</set>

多的一方:

<many-to-one name=“该类的成员变量名称” column=“表中的外键名” class=“与之有关的类的全类名”></many-to-one>

多对多关系

<set name="该类的此成员变量名" table="多对多的关系表的表名">
	<key column="在另一个表中别人引用我的id"/>
	<many-to-many column="另一个表中的我引用别人的外键" class="与之相关类的全类名"/>
</set>

inverse=“true”;根据业务决定谁放弃维护,必需有一个放弃

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值