目录
1.什么是关联关系?
关联关系是指类之间的引用关系,如果类Book与类BookVo关联,那么类A将被定义成类B的属性。
例如:
package com.zking.ssm.book.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.NonNull;
import lombok.ToString;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@ToString
public class Book {
private Integer bookId;
private String bookName;
private String bookNamePinyin;
private Float bookPrice;
private String bookType;
private String bookImages;
private Date createdate;
public Book(Integer bookId, String bookName, String bookNamePinyin, Float bookPrice, String bookType,String bookImages) {
this.bookId = bookId;
this.bookName = bookName;
this.bookNamePinyin = bookNamePinyin;
this.bookPrice = bookPrice;
this.bookType = bookType;
this.bookImages=bookImages;
}
public Book() {
super();
}
public Integer getBookId() {
return bookId;
}
public void setBookId(Integer bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookNamePinyin() {
return bookNamePinyin;
}
public void setBookNamePinyin(String bookNamePinyin) {
this.bookNamePinyin = bookNamePinyin;
}
public Float getBookPrice() {
return bookPrice;
}
public void setBookPrice(Float bookPrice) {
this.bookPrice = bookPrice;
}
public String getBookType() {
return bookType;
}
public void setBookType(String bookType) {
this.bookType = bookType;
}
public String getBookImages() {
return bookImages;
}
public void setBookImages(String bookImages) {
this.bookImages = bookImages;
}
public Date getCreatedate() {
return createdate;
}
public void setCreatedate(Date createdate) {
this.createdate = createdate;
}
}
package com.zking.ssm.book.vo;
import com.zking.ssm.book.model.BookVo;
import lombok.Data;
@Data
public class BookVo {
private Integer bookId1;
private Book book;
}
2.关联关系的分类:
2.1一对多配置mybatis关联映射:
一本书对应多种书本类型,例如:西游记 -> 神话、古典、名著
<resultMap id="one2many" type="Customer">
<id column="customer_id" property="customerId"/>
<result column="customer_name" property="customerName"/>
<!-- 一对多的关系 -->
<!-- property: 指的是集合属性的值, ofType:指的是集合中元素的类型 -->
<collection property="orders" ofType="Order">
<id column="order_id" property="orderId"/>
<result column="order_no" property="orderNo"/>
</collection>
</resultMap>
2.2多对一:
一种书本类型对应多本数,例如:神话 -> 西游记、山海经、聊斋志异
<!-- property: 指的是属性的值, javaType:指的是属性的类型-->
<association property="customer" javaType="Customer">
<id column="customer_id" property="customerId"/>
<result column="customer_name" property="customerName"/>
</association>
</resultMap>
2.3多对多:
永远视为两个一对多
一个人负责多个项目开发,例如:张三负责 A B C
一个项目由多个人来开发,例如:A项目由张三、李四、王五来开发
3.将数据表导入数据库中
2.通过mybatis-generator插件生成dao、mapper、model
1)配置mybatis-generator插件生成文件位置
2)修改generatorConfig.xml配置文件的生成目录(mapper和model)及对应生成关系
3.修改Customer、Order实体类
1)实现序列化接口
2)建立实体映射关联关系(一对多、多对一)
#一对多:一个客户对应多个订单
private List<Order> orders=new ArrayList<Order>();
#多对一:多个订单对应一个客户(一个订单对应一个客户)
private Customer customer;
注意事项,使用左外连接而非内连接!!!