Hibernate 与 Mybatis 映射关系

一 OneToMany

一对多可以存在两种映射实现:外键关联或表关联。

create table customer (
  id int(20) not null auto_increment,
  name varchar(100),
  primary key(id)
)

create table address (
  id int(20) not null auto_increment,
  province varchar(50),
  city varchar(50),
  postcode varchar(50),
  detail varchar(50),
  customer_id int(20),
  primary key (id)
)

1 外键映射:

@Entity
@Table(name="customer")
public class CustomerEO implements java.io.Serializable {
  @OneToMany(cascade={ CascadeType.ALL })
  @JoinColumn(name="customer_id")
  private Collection<AddressEO> addresses = new ArrayList<AddressEO>();
...
}

外键定义在多的一方,也就是address表中.

2 表映射

@Entity
@Table(name = "customer")
public class CustomerEO implements java.io.Serializable {
  ...
  @OneToMany(cascade = { CascadeType.ALL })
  @JoinTable(name="ref_customer_address",
           joinColumns={ @JoinColumn(name="customer_id",referencedColumnName="id")},
           inverseJoinColumns={@JoinColumn(name="address_id",referencedColumnName="id")})
  private Collection<AddressEO> addresses = new ArrayList<AddressEO>();
  ...
}

二 ManyToMany

多对多, 不赘述。

三 Mybatis 的映射关系

参考:https://www.yiibai.com/mybatis/
mybatis 是将对象与SQL语句进行映射,而对于复杂的映射关系,更适合在XML文件中进行定义。
映射关系的组建离不开ResultMap标签。
而对于一对多,多对一,多对多关系的定义利用了关键字:Collection , Association标签。

猜你喜欢

转载自blog.csdn.net/SECURE2/article/details/81285300