一的一方为主表,多的一方为从表(有外键)
一.建立实体类
建立实体类:一的一方增加成员变量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”;根据业务决定谁放弃维护,必需有一个放弃